Γιατί ένα VPN δεν κάνει την προεπισκόπηση ανάπτυξής σας ασφαλή για κοινή χρήση
Ένα VPN δίνει στους δοκιμαστές μια διαδρομή προς το πρωτότυπό σας· δεν κάνει την προεπισκόπηση ασφαλή. Καθορίστε το κοινό, το περιβάλλον εκτέλεσης, τα δεδομένα και τις παρενέργειες πριν την μοιραστείτε.
Το να βάλετε ένα πρωτότυπο πίσω από ένα VPN φαίνεται ιδιωτικό, οπότε το μόνο ερώτημα που μένει μοιάζει να είναι ποιος παίρνει το προφίλ. Αυτή η υπόθεση αποτυγχάνει με συγκεκριμένο τρόπο: ένα τούνελ ελέγχει ποιος μπορεί να φτάσει σε έναν κεντρικό υπολογιστή, όχι τι εκθέτει ο υπολογιστής όταν φτάσουν. Η προεπισκόπηση εξακολουθεί να εκτελεί περιβάλλον εκτέλεσης, κρατά δεδομένα και καλεί ενσωματώσεις που μπορούν να στείλουν πραγματικό email ή να γράψουν σε πραγματική βάση δεδομένων. Αντιμετωπίστε το VPN ως την μπροστινή πόρτα και μετά σχεδιάστε το δωμάτιο πίσω από αυτή.
Μια διαδρομή δεν είναι κοινό
Η εγγραφή ενός δοκιμαστή στο VPN απαντά σε ακριβώς ένα ερώτημα: μπορεί αυτή η συσκευή να φτάσει στη διεύθυνση; Δεν λέει τίποτα για το ποιες σελίδες, API ή κονσόλες επιτρέπεται να χρησιμοποιεί αυτή η συσκευή. Αυτά είναι ξεχωριστές άδειες, και μια πύλη που γνωρίζει μόνο διευθύνσεις δεν μπορεί να τις επιβάλει.
Γράψτε το συμβόλαιο της προεπισκόπησης ως σύντομη λίστα: όνομα κεντρικού υπολογιστή, ακροατής, επιτρεπόμενες λειτουργίες και ποιος κατέχει κάθε ρόλο. Στη συνέχεια ελέγξτε ότι η λίστα ταιριάζει με αυτό που εκτίθεται πραγματικά.
Ένας δοκιμαστής που μπορεί να ανοίξει το πρωτότυπο δεν χρειάζεται την κονσόλα ανάπτυξης, τη σελίδα διαχείρισης της βάσης δεδομένων ή τον κατάλογο αρχικών του προγραμματιστή. Αν η πύλη παρέχει διαδρομή υποδικτύου, όλα αυτά είναι προσβάσιμα εξ ορισμού. Προτιμήστε διαδρομή ανά προορισμό ή βάλτε τις πρόσθετες υπηρεσίες πίσω από τη δική τους ταυτοποίηση. Οποιαδήποτε από τις δύο επιλογές περιορίζει το τι μπορεί να κάνει ένα κλεμμένο προφίλ.
Το περιβάλλον εκτέλεσης που μοιράζεστε είναι μέρος του συμβολαίου
Ένας διακομιστής ανάπτυξης με αποσφαλματωτή και αυτόματη επαναφόρτωση είναι εργαλείο για ένα άτομο σε ένα μηχάνημα. Η τεκμηρίωση των πλαισίων είναι σαφής: ο οδηγός ανάπτυξης του Flask λέει ότι ο διακομιστής ανάπτυξης και ο αποσφαλματωτής του δεν είναι για παραγωγή, και θεωρεί παραγωγή και τις ιδιωτικές ή μονοχρηστικές υπηρεσίες. Η ίδια λογική ισχύει για κάθε πλαίσιο με επαναφορτωτή και διαδραστική σελίδα σφάλματος. Τα χαρακτηριστικά ευκολίας είναι σχεδιασμένα να συντομεύουν τον κύκλο ανάμεσα στην αποθήκευση ενός αρχείου και την εμφάνιση μιας αλλαγής, όχι να αντιμετωπίζουν έναν δοκιμαστή που δεν ελέγχετε.
Ένα διαδραστικό ίχνος είναι διαρροή πληροφοριών και, σε ορισμένους αποσφαλματωτές, επιφάνεια εκτέλεσης κώδικα. Κρατήστε το έξω από την προεπισκόπηση ή περιορίστε την προεπισκόπηση σε μια έκδοση που δεν μπορεί να το ενεργοποιήσει. Αν οι δοκιμαστές χρειάζονται διαγνωστικά, δώστε τους αρχεία καταγραφής αντί για κονσόλα.
Ένας ακροατής με μπαλαντέρ είναι το άλλο μισό αυτού του λάθους. Η σύνδεση σε κάθε διεπαφή εκθέτει την υπηρεσία σε δίκτυα που δεν σκοπεύατε, συμπεριλαμβανομένου του Wi-Fi της καφετέριας.
Χρησιμοποιήστε εφήμερους λογαριασμούς και δεδομένα χωρίς πραγματικές παρενέργειες
Χρησιμοποιήστε λογαριασμούς που δημιουργήθηκαν για δοκιμές και δεδομένα που δεν μπορούν να φέρουν κανέναν σε δύσκολη θέση. Το επικίνδυνο μέρος σπάνια είναι η γραμμή της βάσης δεδομένων· είναι η ενσωμάτωση πίσω από το κουμπί. Το email, οι πληρωμές, τα SMS, τα webhooks και η εξαγωγή αρχείων φτάνουν όλα έξω από την προεπισκόπηση.
Καταγράψτε κάθε εξερχόμενη επίδραση που μπορεί να προκαλέσει το πρωτότυπο και μετά κατευθύνετε την καθεμία σε αμμοδόχο ή απενεργοποιήστε την. Μια ιδιωτική διαδρομή δεν κάνει ένα ζωντανό σημείο πληρωμής ακίνδυνο.
Τα διαπιστευτήρια παραγωγής είναι το ίδιο πρόβλημα σε άλλη μορφή. Μια προεπισκόπηση που κληρονομεί το κλειδί API παραγωγής για να εξοικονομήσει χρόνο εγκατάστασης είναι σύστημα παραγωγής με διεπαφή αποσφαλμάτωσης. Δημιουργήστε διαπιστευτήρια με περιορισμένο πεδίο και τις μικρότερες χρήσιμες άδειες. Περιστρέψτε τα όταν τελειώσει η προεπισκόπηση, γιατί μια ανακληθείσα προεπισκόπηση με ζωντανά κλειδιά είναι ακόμα ζωντανή.
Ελέγξτε τη σελίδα, τους πόρους και το socket
Μια σελίδα που αποδίδεται δεν είναι προεπισκόπηση που λειτουργεί. Το HTML μπορεί να φορτώνει ενώ ένας κεντρικός υπολογιστής πόρων, ένα API ή ένα WebSocket δείχνει ακόμα σε URL που ο δοκιμαστής δεν μπορεί να φτάσει. Κάθε ένα από αυτά είναι ξεχωριστή εγγραφή στο συμβόλαιο.
Από μια εγκεκριμένη συσκευή, ζητήστε τη σελίδα και τον μεγαλύτερο πόρο ξεχωριστά:
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
Στη συνέχεια παρακολουθήστε την κονσόλα του προγράμματος περιήγησης κατά τη διάρκεια μιας πραγματικής αλληλεπίδρασης και επιβεβαιώστε ότι το socket ζωντανής επαναφόρτωσης συνδέεται. Αν δεν συνδέεται, η διόρθωση είναι μια σκόπιμη διαδρομή για αυτό το άκρο, όχι ένας κανόνας που διευρύνεται μέχρι η σελίδα να φαίνεται πλήρης.
Αποσύρετε την προεπισκόπηση σε μια ημερομηνία, όχι στη μνήμη
Δώστε στην προεπισκόπηση έναν ιδιοκτήτη και μια ημερομηνία λήξης τη στιγμή που τη δημιουργείτε. Όταν έρθει η ημερομηνία, αφαιρέστε την εγγραφή, τις ταυτότητες των δοκιμαστών και τα προσωρινά διαπιστευτήρια μέσω όποιας διαμόρφωσης τα κατέχει. Μια ξεχασμένη προεπισκόπηση είναι ο τρόπος με τον οποίο ένα ιδιωτικό πρωτότυπο γίνεται μόνιμα δημόσιο.
Επαληθεύστε την απόσυρση από έξω: το όνομα κεντρικού υπολογιστή πρέπει να σταματήσει να επιλύεται ή να σταματήσει να απαντά σε μη εγκεκριμένους πελάτες.
Κρατήστε τον πηγαίο κώδικα και τις σημειώσεις αποκατάστασης, αλλά όχι την εναλλακτική διαδρομή. Η δοκιμή ενός καλού ορίου προεπισκόπησης είναι βαρετή: μια εγκεκριμένη συσκευή μπορεί να κάνει τις απαιτούμενες ενέργειες και μια μη εγκεκριμένη ταυτότητα δεν μπορεί. Το ίδιο πρέπει να ισχύει αφού κλείσει το τούνελ. Αυτό το αποτέλεσμα αξίζει περισσότερο από ένα εικονίδιο VPN δίπλα σε ένα πρωτότυπο που τρέχει με ενεργοποιημένα όλα τα χαρακτηριστικά ανάπτυξης.