Защо VPN не прави прегледа ви за разработка безопасен за споделяне
VPN дава на тестващите маршрут до вашия прототип; то не прави прегледа безопасен. Определете аудиторията, средата за изпълнение, данните и страничните ефекти, преди да го споделите.
Поставянето на прототип зад 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 до прототип, работещ с включени всички функции за разработка.