Dlaczego VPN nie czyni twojego podglądu deweloperskiego bezpiecznym do udostępnienia
VPN daje testerom trasę do twojego prototypu; nie czyni podglądu bezpiecznym. Określ odbiorców, środowisko uruchomieniowe, dane i skutki uboczne, zanim go udostępnisz.
Umieszczenie prototypu za VPN wydaje się prywatne, więc jedyne pozostałe pytanie wygląda na to, kto dostanie profil. To założenie zawodzi w konkretny sposób: tunel kontroluje, kto może dotrzeć do hosta, a nie to, co host ujawnia po ich przybyciu. Podgląd nadal uruchamia środowisko, trzyma dane i wywołuje integracje, które mogą wysłać prawdziwy e-mail lub zapisać do prawdziwej bazy danych. Traktuj VPN jak drzwi wejściowe, a potem zaprojektuj pokój za nimi.
Trasa to nie odbiorcy
Zapisanie testera do VPN odpowiada dokładnie na jedno pytanie: czy to urządzenie może dotrzeć pod adres? Nie mówi nic o tym, z których stron, API lub konsol to urządzenie może korzystać. To osobne uprawnienia, a brama, która zna tylko adresy, nie może ich wyegzekwować.
Napisz umowę podglądu jako krótką listę: nazwa hosta, nasłuch, dozwolone operacje i kto pełni każdą rolę. Następnie sprawdź, czy lista odpowiada temu, co jest rzeczywiście wystawione.
Tester, który może otworzyć prototyp, nie potrzebuje konsoli wdrożeniowej, strony administracyjnej bazy danych ani katalogu domowego dewelopera. Jeśli brama przyznaje trasę podsieci, wszystko to jest domyślnie osiągalne. Preferuj trasę na cel lub umieść dodatkowe usługi za ich własnym uwierzytelnianiem. Każdy z wyborów zawęża to, co może zrobić skradziony profil.
Środowisko, które udostępniasz, jest częścią umowy
Serwer deweloperski z debuggerem i automatycznym przeładowaniem to narzędzie dla jednej osoby na jednej maszynie. Dokumentacja frameworków mówi to wprost: przewodnik wdrożeniowy Flaska stwierdza, że jego serwer deweloperski i debugger nie są do produkcji, i liczy prywatne lub jednoużytkownikowe usługi jako produkcję. To samo rozumowanie dotyczy każdego frameworku z przeładowywaczem i interaktywną stroną błędu. Funkcje wygody mają skracać pętlę między zapisaniem pliku a zobaczeniem zmiany, a nie stawać naprzeciw testera, którego nie kontrolujesz.
Interaktywny ślad stosu to wyciek informacji, a w niektórych debuggerach powierzchnia wykonywania kodu. Trzymaj go poza podglądem albo ogranicz podgląd do kompilacji, która nie może go włączyć. Jeśli testerzy potrzebują diagnostyki, daj im logi zamiast konsoli.
Nasłuch z wieloznacznikiem to druga połowa tego błędu. Wiązanie do wszystkich interfejsów wystawia usługę w sieciach, których nie zamierzałeś, w tym w Wi-Fi kawiarni.
Używaj kont jednorazowych i danych bez prawdziwych skutków ubocznych
Używaj kont utworzonych do testów i danych, które nie mogą nikogo zawstydzić. Niebezpieczna część rzadko jest wierszem bazy danych; to integracja za przyciskiem. E-mail, płatności, SMS, webhooki i eksport plików wszystkie sięgają poza podgląd.
Wypisz każdy efekt wychodzący, który prototyp może wywołać, a potem skieruj każdy do piaskownicy lub go wyłącz. Prywatna trasa nie czyni działającego punktu płatności nieszkodliwym.
Poświadczenia produkcyjne to ten sam problem w innej formie. Podgląd, który dziedziczy produkcyjny klucz API, aby zaoszczędzić czas konfiguracji, jest systemem produkcyjnym z interfejsem debugowania. Twórz poświadczenia o ograniczonym zakresie i najmniejszych użytecznych uprawnieniach. Rotuj je, gdy podgląd się kończy, bo odwołany podgląd z żywymi kluczami wciąż żyje.
Sprawdź stronę, zasoby i gniazdo
Strona, która się renderuje, nie jest działającym podglądem. HTML może się wczytać, podczas gdy host zasobów, API lub WebSocket wciąż wskazuje adres URL, do którego tester nie dotrze. Każdy z nich to osobny wpis w umowie.
Z zatwierdzonego urządzenia poproś osobno o stronę i największy zasób:
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
Potem obserwuj konsolę przeglądarki podczas prawdziwej interakcji i potwierdź, że gniazdo przeładowania na żywo się łączy. Jeśli nie, poprawką jest zamierzona trasa dla tego punktu końcowego, a nie reguła, która rozszerza się, aż strona wygląda na kompletną.
Wycofaj podgląd w danym dniu, nie z pamięci
Daj podglądowi właściciela i datę końca w momencie, gdy go tworzysz. Gdy data nadejdzie, usuń wpis, tożsamości testerów i tymczasowe poświadczenia przez konfigurację, która je posiada. Zapomniany podgląd to sposób, w jaki prywatny prototyp staje się trwale publiczny.
Zweryfikuj wycofanie z zewnątrz: nazwa hosta powinna przestać się rozwiązywać lub przestać odpowiadać niezatwierdzonym klientom.
Zachowaj źródło i notatki odtworzeniowe, ale nie ścieżkę awaryjną. Test dobrej granicy podglądu jest nudny: zatwierdzone urządzenie może wykonać wymagane działania, a niezatwierdzona tożsamość nie może. To samo musi obowiązywać po wyłączeniu tunelu. Ten wynik jest wart więcej niż ikona VPN obok prototypu działającego z włączonymi wszystkimi funkcjami deweloperskimi.