Размяшчэнне прататыпа за VPN здаецца прыватным, таму адзінае пытанне, якое застаецца, выглядае як тое, хто атрымае профіль. Гэта дапушчэнне памыляецца пэўным чынам: тунель кантралюе, хто можа дасягнуць хоста, а не тое, што хост паказвае пасля іх прыходу. Прагляд па-ранейшаму запускае асяроддзе выканання, захоўвае даныя і выклікае інтэграцыі, якія могуць адпраўляць сапраўдную пошту або пісаць у сапраўдную базу даных. Стаўцеся да VPN як да ўваходных дзвярэй і потым праектуйце пакой за імі.

Маршрут — гэта не аўдыторыя

Запіс тэсціроўшчыка ў VPN адказвае роўна на адно пытанне: ці можа гэта прылада дасягнуць адраса? Ён нічога не кажа пра тое, якія старонкі, API або кансолі гэтая прылада можа выкарыстоўваць. Гэта асобныя дазволы, і шлюз, які ведае толькі адрасы, не можа іх забяспечыць.

Напішыце дагавор прагляду як кароткі спіс: імя хоста, слухач, дазволеныя аперацыі і хто займае кожную ролю. Затым праверце, ці спіс адпавядае таму, што фактычна адкрыта.

Тэсціроўшчыку, які можа адкрыць прататып, не патрэбна кансоль разгортвання, старонка адміністравання базы даных або хатні каталог распрацоўшчыка. Калі шлюз дае маршрут да падсеткі, кожнае з гэтага дасягальна па змаўчанні. Аддайце перавагу маршруту для кожнага пункта прызначэння або пастаўце дадатковыя службы за іх уласную аўтэнтыфікацыю. Любы з двух варыянтаў звужвае тое, што можа зрабіць выкрадзены профіль.

Асяроддзе выканання, якое вы дзеліце, — частка дагавора

Сервер распрацоўкі з адладчыкам і аўтаперазагрузкай — гэта інструмент для аднаго чалавека на адной машыне. Дакументацыя фрэймворкаў кажа пра гэта прама: кіраўніцтва па разгортванні Flask сцвярджае, што яго сервер распрацоўкі і адладчык не прызначаны для вытворчасці, і яно таксама лічыць прыватныя або аднакарыстальніцкія службы вытворчасцю. Тое ж меркаванне датычыцца любога фрэймворка з перазагрузчыкам і інтэрактыўнай старонкай памылак. Функцыі зручнасці прызначаны скарачаць цыкл паміж захаваннем файла і бачаннем змены, а не сутыкацца з тэсціроўшчыкам, якім вы не кіруеце.

Інтэрактыўная трасіроўка — гэта ўцечка інфармацыі і, у некаторых адладчыках, паверхня выканання коду. Трымайце яе па-за праглядам або абмяжуйце прагляд зборкай, якая не можа яе ўключыць. Калі тэсціроўшчыкам патрэбна дыягностыка, дайце ім журналы, а не кансоль.

Слухач з маскай — другая палова гэтай памылкі. Прывязка да ўсіх інтэрфейсаў адкрывае службу ў сетках, якія вы не мелі на ўвазе, уключаючы Wi-Fi у кавярні.

Выкарыстоўвайце аднаразовыя ўліковыя запісы і даныя без рэальных пабочных эфектаў

Выкарыстоўвайце ўліковыя запісы, створаныя для тэсціравання, і даныя, якія не могуць нікога засароміць. Небяспечная частка рэдка бывае радком у базе даных; гэта інтэграцыя за кнопкай. Пошта, плацяжы, SMS, вэбхукі і экспарт файлаў — усё гэта выходзіць за межы прагляду.

Пералічыце кожны знешні эфект, які можа выклікаць прататып, затым накіруйце кожны ў пясочніцу або адключыце яго. Прыватны маршрут не робіць жывую кропку плацяжоў бясшкоднай.

Уліковыя даныя вытворчасці — тая ж праблема ў іншай форме. Прагляд, які атрымлівае ключ API вытворчасці, каб зэканоміць час на наладку, — гэта вытворчая сістэма з інтэрфейсам адладкі. Стварайце абмежаваныя ўліковыя даныя з найменшымі карыснымі дазволамі. Мяняйце іх, калі прагляд скончыцца, бо адкліканы прагляд з жывымі ключамі ўсё яшчэ жывы.

Праверце старонку, рэсурсы і сокет

Старонка, якая адлюстроўваецца, — гэта не прагляд, які працуе. HTML можа загрузіцца, пакуль хост рэсурсаў, API або WebSocket усё яшчэ паказвае на адрас, да якога тэсціроўшчык не можа дасягнуць. Кожнае з гэтага — асобны пункт у дагаворы.

З ухваленай прылады запытайце старонку і найбуйнейшы рэсурс асобна:

curl -sS -o /dev/null -w "%{http_code}" https://preview.staging.example/
curl -sS -o /dev/null -w "%{http_code}" https://preview.staging.example/assets/app.js

Затым паглядзіце на кансоль браўзера падчас рэальнага ўзаемадзеяння і пацвердзіце, што сокет гарачай перазагрузкі злучаны. Калі не, выпраўленне — гэта наўмысны маршрут для гэтага канцавога пункта, а не правіла, якое пашыраецца, пакуль старонка не паглядзіць цалкам.

Спыняйце прагляд па даце, а не па памяці

Дайце прагляду ўладальніка і дату заканчэння ў момант яго стварэння. Калі дата настане, выдаліце запіс, ідэнтычнасці тэсціроўшчыкаў і часовыя ўліковыя даныя праз тую канфігурацыю, якой яны належаць. Забыты прагляд — гэта шлях, якім прыватны прататып становіцца пастаянна публічным.

Праверце спыненне звонку: імя хоста павінна перастаць вырашацца або перастаць адказваць неўхваленым кліентам.

Захавайце зыходнік і нататкі пра аднаўленне, але не запасны шлях. Тэст добрай мяжы прагляду нудны: ухваленая прылада можа выконваць патрабаваныя дзеянні, а неўхваленая ідэнтычнасць не можа. Тое ж павінна выконвацца пасля адключэння тунеля. Гэты вынік каштоўнейшы за значок VPN побач з прататыпам, які працуе з уключанымі ўсімі функцыямі распрацоўкі.

Падобныя артыкулы