Posar un prototip darrere d’una VPN sembla privat, així que l’única pregunta que queda sembla qui rep el perfil. Aquesta suposició falla d’una manera concreta: un túnel controla qui pot arribar a un amfitrió, no què exposa l’amfitrió un cop hi arriben. La previsualització encara executa un entorn, reté dades i crida integracions que poden enviar correu real o escriure en una base de dades real. Tracta la VPN com la porta d’entrada i després dissenya l’habitació del darrere.

Una ruta no és una audiència

Inscriure un provador a la VPN respon exactament una pregunta: pot aquest dispositiu arribar a l’adreça? No diu res sobre quines pàgines, API o consoles pot utilitzar aquest dispositiu. Són permisos separats, i una passarel·la que només coneix adreces no els pot aplicar.

Escriu el contracte de la previsualització com una llista curta: nom d’amfitrió, escoltador, operacions permeses i qui té cada rol. Després comprova que la llista coincideixi amb el que realment s’exposa.

Un provador que pot obrir el prototip no necessita la consola de desplegament, la pàgina d’administració de la base de dades ni el directori personal del desenvolupador. Si la passarel·la concedeix una ruta de subxarxa, tot això és accessible per defecte. Prefereix una ruta per destinació, o posa els serveis addicionals darrere de la seva pròpia autenticació. Qualsevol de les dues opcions redueix què pot fer un perfil robat.

L’entorn que comparteixes forma part del contracte

Un servidor de desenvolupament amb depurador i recàrrega automàtica és una eina per a una persona en una màquina. La documentació dels marcs és contundent: la guia de desplegament de Flask diu que el seu servidor de desenvolupament i el depurador no són per a producció, i també compta els serveis privats o d’un sol usuari com a producció. El mateix raonament val per a qualsevol marc amb un recarregador i una pàgina d’error interactiva. Les funcions de comoditat estan dissenyades per escurçar el bucle entre desar un fitxer i veure un canvi, no per enfrontar-se a un provador que no controles.

Un rastre interactiu és una fuita d’informació i, en alguns depuradors, una superfície d’execució de codi. Mantén-lo fora de la previsualització, o limita la previsualització a una compilació que no el pugui habilitar. Si els provadors necessiten diagnòstics, dona’ls registres en lloc d’una consola.

Un escoltador comodí és l’altra meitat d’aquest error. Enllaçar a totes les interfícies exposa el servei en xarxes que no pretenies, inclosa el Wi-Fi de la cafeteria.

Fes servir comptes d’un sol ús i dades sense efectes secundaris reals

Fes servir comptes creats per a proves i dades que no puguin avergonyir ningú. La part perillosa poques vegades és la fila de la base de dades; és la integració darrere del botó. El correu, els pagaments, els SMS, els webhooks i l’exportació de fitxers arriben tots fora de la previsualització.

Llista cada efecte de sortida que el prototip pot desencadenar i després apunta cada un a una caixa de sorra o desactiva’l. Una ruta privada no fa inofensiu un punt de pagament en directe.

Les credencials de producció són el mateix problema amb una altra forma. Una previsualització que hereta la clau API de producció per estalviar temps de configuració és un sistema de producció amb una interfície de depuració. Crea credencials abastades amb els permisos útils més petits. Rota-les quan acabi la previsualització, perquè una previsualització revocada amb claus vives encara és viva.

Comprova la pàgina, els actius i el sòcol

Una pàgina que es renderitza no és una previsualització que funciona. L’HTML es pot carregar mentre un amfitrió d’actius, una API o un WebSocket encara apunten a una URL a què el provador no pot arribar. Cada un d’aquests és una entrada separada al contracte.

Des d’un dispositiu aprovat, sol·licita la pàgina i l’actiu més gran per separat:

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

Després mira la consola del navegador durant una interacció real i confirma que el sòcol de recàrrega en directe es connecta. Si no ho fa, la correcció és una ruta deliberada per a aquest punt final, no una regla que s’eixampla fins que la pàgina sembla completa.

Retira la previsualització en una data, no de memòria

Dona a la previsualització un propietari i una data de finalització en el moment de crear-la. Quan arribi la data, elimina l’entrada, les identitats dels provadors i les credencials temporals mitjançant la configuració que les posseeix. Una previsualització oblidada és com un prototip privat es converteix en un de públic permanent.

Verifica la retirada des de fora: el nom d’amfitrió hauria de deixar de resoldre’s o de respondre als clients no aprovats.

Conserva el codi font i les notes de recuperació, però no el pla de reserva. La prova d’una bona frontera de previsualització és avorrida: un dispositiu aprovat pot fer les accions requerides, i una identitat no aprovada no pot. El mateix ha de valer després que es desconnecti el túnel. Aquest resultat val més que una icona de VPN al costat d’un prototip que funciona amb totes les funcions de desenvolupament activades.

Articles relacionats