Å sette en prototype bak en VPN føles privat, så det eneste spørsmålet som gjenstår ser ut til å være hvem som får profilen. Den antakelsen svikter på en bestemt måte: en tunnel styrer hvem som kan nå en vert, ikke hva verten avdekker når de først er der. Forhåndsvisningen kjører fortsatt et kjøretidsmiljø, holder data og kaller integrasjoner som kan sende ekte e-post eller skrive til en ekte database. Behandle VPN-en som hoveddøren og design deretter rommet bak den.

En rute er ikke et publikum

Å melde en tester inn i VPN-en svarer på nøyaktig ett spørsmål: kan denne enheten nå adressen? Det sier ingenting om hvilke sider, API-er eller konsoller enheten får bruke. Det er separate tillatelser, og en gateway som bare kjenner adresser kan ikke håndheve dem.

Skriv forhåndsvisningskontrakten som en kort liste: vertsnavn, lytter, tillatte operasjoner og hvem som har hver rolle. Sjekk deretter at listen stemmer med det som faktisk er eksponert.

En tester som kan åpne prototypen trenger ikke utrullingskonsollen, administrasjonssiden for databasen eller hjemmekatalogen til utvikleren. Hvis gatewayen gir en subnett-rute, er alt dette tilgjengelig som standard. Foretrekk en rute per destinasjon, eller sett tilleggstjenestene bak deres egen autentisering. Begge valgene innsnevrer hva en stjålet profil kan gjøre.

Kjøretidsmiljøet du deler er en del av kontrakten

En utviklingsserver med feilsøker og automatisk omlasting er et verktøy for én person på én maskin. Rammeverksdokumentasjonen er tydelig på dette: Flask sin utrullingsveiledning sier at utviklingsserveren og feilsøkeren ikke er for produksjon, og den regner private eller enkeltbruker-tjenester som produksjon også. Samme resonnement gjelder for ethvert rammeverk med en omlaster og en interaktiv feilside. Bekvemmelighetsfunksjoner er laget for å forkorte løkken mellom å lagre en fil og se en endring, ikke for å møte en tester du ikke kontrollerer.

En interaktiv stacktrace er en informasjonslekkasje og, i noen feilsøkere, en flate for kodekjøring. Hold den unna forhåndsvisningen, eller begrens forhåndsvisningen til en bygging som ikke kan aktivere den. Hvis testere trenger diagnostikk, gi dem logger i stedet for en konsoll.

En lytter med jokertegn er den andre halvdelen av denne feilen. Binding til alle grensesnitt eksponerer tjenesten på nettverk du ikke mente, inkludert kafeen sin Wi-Fi.

Bruk engangskontoer og data uten ekte bivirkninger

Bruk kontoer laget for testing og data som ikke kan gjøre noen forlegne. Den farlige delen er sjelden databaseraden; det er integrasjonen bak knappen. E-post, betalinger, SMS, webhooks og fileksport når alle utenfor forhåndsvisningen.

List opp hver utgående effekt prototypen kan utløse, og pek deretter hver enkelt mot en sandkasse eller slå den av. En privat rute gjør ikke et live betalingsendepunkt ufarlig.

Produksjonslegitimasjon er samme problem i en annen form. En forhåndsvisning som arver produksjons-API-nøkkelen for å spare oppsettstid er et produksjonssystem med et feilsøkingsgrensesnitt. Lag begrensede legitimasjoner med de minste nyttige tillatelsene. Roter dem når forhåndsvisningen avsluttes, fordi en tilbakekalt forhåndsvisning med levende nøkler fortsatt er levende.

Sjekk siden, ressursene og sockelen

En side som rendres er ikke en forhåndsvisning som fungerer. HTML-en kan lastes mens en ressursvert, en API eller en WebSocket fortsatt peker på en URL testeren ikke kan nå. Hver av disse er en egen oppføring i kontrakten.

Fra en godkjent enhet, be om siden og den største ressursen hver for seg:

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

Se deretter på nettleserkonsollen under en ekte interaksjon og bekreft at sockelen for live-omlasting kobles til. Hvis ikke, er rettelsen en bevisst rute for det endepunktet, ikke en regel som utvider seg til siden ser komplett ut.

Trekk forhåndsvisningen tilbake på en dato, ikke på hukommelse

Gi forhåndsvisningen en eier og en sluttdato i det øyeblikket du oppretter den. Når datoen kommer, fjern oppføringen, testeridentitetene og de midlertidige legitimasjonene gjennom den konfigurasjonen som eier dem. En glemt forhåndsvisning er hvordan en privat prototype blir en permanent offentlig.

Bekreft tilbaketrekkingen utenfra: vertsnavnet skal slutte å slå opp eller slutte å svare ikke-godkjente klienter.

Behold kilden og gjenopprettingsnotatene, men ikke reserveveien. Testen av en god forhåndsvisningsgrense er kjedelig: en godkjent enhet kan utføre de nødvendige handlingene, og en ikke-godkjent identitet kan ikke. Det samme må gjelde etter at tunnelen er slått av. Det resultatet er verdt mer enn et VPN-ikon ved siden av en prototype som kjører med alle utviklingsfunksjoner slått på.

Relaterte artikler