Ασφάλεια συνδέσμων με κωδικό πρόσβασης — τι συμβαίνει όταν κάνετε κλικ
Μπορείτε να προσθέσετε κωδικό πρόσβασης στον σύντομο σύνδλμό σας. Σας δείχνουμε τι συμβαίνει παρακάτω — χωρίς να χρησιμοποιήσουμε ορολογία — και γιατί αξίζει να το κάνετε.
Το μισό εγχειρίδια για συνδέσμους με κωδικό ξεκινά με την πρόταση ότι αυτό αποτελεί μια "επιπλέον στρώση ασφάλειας". Και εκεί σταματά. Κατά τη γνώμη μου, αυτό είναι ακριβώς το λιγότερο σημαντικό πράγμα που μπορεί να ειπωθεί γι' αυτό.
Γιατί το "επίπεδο ασφάλειας" δεν εξηγεί τίποτα. Δεν σου λέει τι συμβαίνει με αυτόν τον κωδικό, ποιος τον βλέπει, ούτε πότε έχει καθόλου νόημα. Και αυτά είναι τα μόνα ερωτήματα που αξίζει να θέσεις στον εαυτό σου, πριν κάνεις κλικ στο "Προσθήκη κωδικού".
Έτσι, ένα προς ένα.
Το κωδικό στον σύνδεσμο δεν είναι το ίδιο με την κλειδαριά στην πύλη
Οι άνθρωποι φανταလုံးυται ότι ο κωδικός πρόσβασης κλειδώνει έναν σύνδεσμο αδιάρρηκτα. Δεν είναι έτσι. Η ασφάλεια των συνδέσμων με κωδικό λειτουργεί περισσότερο σαν ένα εισιτήριο για μια συναυλία: όποιος έχει το εισιτήριο, μπαίνει. Όποιος το δώσει σε κάποιον, θα επιτρέψει και σε αυτόν να εισέλθει.
Αυτό ακούγεται σαν ελάττωμα. Δεν είναι. Απλώς πρέπει να ξέρετε για τι χρησιμεύει αυτός ο μηχανισμός.
Τρεις περιπτώσεις, στις οποίες είναι πραγματικά χρήσιμο:
Εκτίμηση τιμών για premium πελάτες ή έγγραφο σε έκδοση beta, πριν βγει στον κόσμο. Χωρίς κωδικό πρόσβασης, ένας τέτοιος σύνδεσμος αργά ή γρήγορα θα καταλήξει στην Google ή θα περάσει από χέρι σε χέρι.
Περιεχόμενο με ημερομηνία λήξης. Προσφορά μόνο για την Παρασκευή. Υλικό από τη διάσκεψη αποκλειστικά για τους συμμετέχοντες. Το κωδικό δημιουργεί έναν ελεγχόμενο σύνδεσμο εισόδου — ξέρεις ότι κάποιος τον πήρε από εσένα, δεν τον βρήκε κατά τύχη.
Ένα πράγμα που δημοσιεύεις πλήρως δημόσια, αλλά θέλεις να κρατάς την ακοή σου. Ο σύνδεσμος μπορεί να κυκλοφορήσει. Χωρίς κωδικό πρόσβασης, κανείς δεν θα μπει έτσι κι αλλιώς.
Και τώρα αυτό που αυτός ο οδηγός δεν έπρεπε να παραλείψει
Πληκτρολογείτε τον κωδικό πρόσβασης στο φόρμα. Την ίδια στιγμή, αυτό εξαφανίζεται. Κυριολεκτικά. Το γεγονός ότι ορίσατε το "tajne123", παύει να υπάρχει σε αναγνώσιμη μορφή πριν προλάβετε να αφήσετε το κουμπί.
Τι παραμένει στη βάση δεδομένων; Όχι ο κωδικός πρόσβασης. Μετά από αυτόν, το αποτύπωμα δακτύλου. Επαγγελματικά: hash. Μια σειρά χαρακτήρων που ταιριάζει με τον κωδικό σας μόνο όταν κάποιος πληκτρολογήσει ακριβώς το ίδιο με εσάς. Από μόνη της δεν αποκαλύπτει τίποτα.
Θα το πω ευθέως, γιατί είναι σημαντικό: εγώ, ο διαχειριστής της υπηρεσίας, δεν έχω τρόπο να διαβάσω τον κωδικό σου. Όχι επειδή είμαι ευγενικός. Αλλά επειδή φυσικά δεν υπάρχει τί gì να διαβαστεί. Αν κάποιος εισέβαλτο στη βάση δεδομένων, θα έκλεβε μια στοίβα από αυτά τα αποτυπώματα και αυτό ήταν όλο.
Ο αλγόριθμος που το υπολογίζει είναι εσκεμμένα αργός. Ξέρω ότι η λέξη "αργός" ακούγεται σαν παράπονο, αλλά αυτό είναι ένα πλεονέκτημα. Ο σκοπός είναι κάποιος που έκλεψε τη βάση δεδομένων να πρέπει να αφιερώσει αβυσσαίως πολύ χρόνο για να μαντέψει ένα μόνο κωδικό. Μιλάμε για χρόνια, όχι για δευτερόλεπτα.
Κλικ από την άλλη πλευρά
Κάποιος λαμβάνει τον σύνδεσμό σας και κάνει κλικ. Αντί να φτάσει αμέσως στον προορισμό του, βλέπει μια οθόνη: "αυτός ο σύνδεσμος προστατεύεται με κωδικό πρόσβασης", ένα πεδίο εισαγωγής, ένα κουμπί.
Πληκτρολογεί. Ο διακομιστής συγκρίνει αυτό που πληκτρολόγησε με το αποθηκευμένο αποτύπωμα. Συμφωνεί; Λαμβάνει ένα session token που είναι έγκυρο για μία ημέρα. Για τις επόμενες 24 ώρες, επιστρέφει στον σύνδεσμο χωρίς να χρειάζεται να πληκτρολογήσει τίποτα. Δεν χρειάζεται να θυμάται, δεν χρειάζεται να κουβεντιάζει.
Δεν συμφωνείτε; Σφάλμα. Πέντε λάθη από την ίδια διεύθυνση IP και η είσοδος αποκλείεται για πέντε λεπτά. Ένα bot που προσπαθεί να δοκιμάσει κωδικούς στη σειρά, προσκρούει σε τοίχο.
Τι απλά δεν υπάρχει εδώ
Δεν αποθηκεύουμε κωδικούς σε μορφή απλού κειμένου. Πουθενά. Ακόμα και στα logs, τα οποία ελέγχω όταν ψάχνω για σφάλματα.
Δεν στέλνουμε κωδικούς μέσω email. Αυτό σημαίνει ότι αν κάποιος ξεχάσει τον κωδικό του, δεν θα μπορέσω να του τον στείλω, γιατί δεν γνωρίζω τον ίδιο. Πρέπει να τον στείλετε εσείς μόνοι σας, με το ίδιο κανάλι όπως και προηγουμένως.
Και δεν μεταφέρουμε κωδικούς προς τα έξω. Καμία ανάλυση, κανένα marketing, κανένα AB δεν αγγίζει αυτά τα δεδομένα. (Αυτό είναι μια αρχή που ισχύει σε ολόκληρο το cutty.dev, όχι μόνο εδώ.)
Δύο συνήθειες που κάνουν τη διαφορά
Πρώτο: μην επινοείς κωδικό από το μυαλό σου. Το όνομα της εταιρείας συν το έτος ίδρυσης είναι ένα δώρο για οποιονδήποτε σε γνωρίζει. Ένας generator στον περιηγητή θα σου βγάλει κάτι καλύτερο σε δευτερόλεπτα.
Δεύτερο, πιο σημαντικό: μην στέλνετε τον κωδικό από την ίδια διεύθυνση ως το σύνδεσμο. Το σύνδεσμο στάλθηκε μέσω email; Στείλτε τον κωδικό μέσω SMS. Ή το αντίθετο. Η λογική είναι ότι η παραβίαση ενός λογαριασμού δεν δίνει σε κανέναν το πλήρες σετ πληροφοριών.
Μια λεπτομέρεια για την οποία λίγοι γνωρίζουν: μπορείτε να δημιουργήσετε αρκετούς συνδέσμους που οδηγούν στην ίδια διεύθυνση, αλλά με διαφορετικά κείμενα. Δίνετε πρόσβαση σε πέντε άτομα, το καθένα με έναν ξεχωριστό σύνδεσμο. Ένα άτομο πρέπει να αποχαιρετήσει; Μπλοκάρετε τον σύνδεσμό του, και τα υπόλοιπα δεν θα το προσέξουν καν.
Θα αλλάξετε τον κωδικό χωρίς να δημιουργήσετε νέο σύνδεσμο. Πίνακας ελέγχου, "Επεξεργασία", νέος κωδικός. Προσοχή: όλες οι ενεργές συνεδρίες 24 ωρών διακόπτονται αμέσως. Κάθε χρήστης πρέπει να πληκτρολογήσει τον κωδικό από την αρχή.
Σύνορο που αξίζει να γνωρίζετε εγκαίρως
Επιστρέψτε στο εισιτήριο για τη συναυλία. Ο κωδικός προστατεύει από τη μηχανή αναζήτησης και από έναν τυχαίο επισκέπτη. Δεν προστατεύει από κάποιον που γνωρίζει τον κωδικό και αποφασίζει να τον μοιραστεί με τον κόσμο.
Αν το σενάριό σας ακούγεται "αυτό πρέπει να δει ακριβώς αυτό το ένα άτομο και κανείς άλλος", τότε το σύνθημα δεν αρκεί. Εδώ χρειάζεστε λογαριασμούς, σύνδεση, εξουσιοδότηση. Άλλη لیگα, άλλο πρόβλημα.
Αλλά σηκώστε το χέρι σας, πόσο συχνά έχετε πραγματικά ένα τέτοιο σενάριο; Από την εμπειρία μου, σπάνια. Στην 압whelmingly πλειονότητα των περιπτώσεων, πρόκειται για ένα απλό "δεν θέλω να έρθει κάποιος από τον δρόμο εδώ". Και για αυτή τη φράση υπερκαλύπτεται με άφθονο.
Αν θέλετε να δείτε πώς φαίνεται από μέσα — κατά τη δημιουργία ενός συνδέσμου, αναπτύξτε τις "Προηγμένες επιλογές" και επιλέξτε το "Προσθήκη κωδικού πρόσβασης". Το υπόλοιπο γίνεται αυτόματα.