Ένα πεδίο με ετικέτα «αριθμός λογαριασμού» δεν είναι αυτόματα δημόσια αναφορά, και η ετικέτα δεν είναι το τεστ. Το τεστ είναι το τι επιτρέπει η κατοχή: αν η γνώση του αριθμού συνδέει κάποιον, κατεβάζει ένα προφίλ σύνδεσης ή εξουσιοδοτεί μια συσκευή, ο αριθμός είναι διαπιστευτήριο με κύκλο ζωής. Εκτελώ τους πέντε ελέγχους παρακάτω κάθε φορά που μια υπηρεσία εκδίδει μια αριθμητική ταυτότητα και την αποκαλεί ακίνδυνη. Καθένας παράγει μια γραμμή σε ένα σύντομο αρχείο, και το αρχείο είναι το παραδοτέο, όχι μια ετυμηγορία για το προϊόν.

Καταγράψτε τι πραγματικά παρέχει η κατοχή

Γράψτε κάθε ενέργεια που ξεκλειδώνει ο αριθμός, χωριστά. Η σύνδεση σε μια πύλη, η λήψη ενός αρχείου διαμόρφωσης, η εξουσιοδότηση μιας νέας συσκευής και η παροχή μιας αποδεκτής σύνδεσης τούνελ είναι διαφορετικές εξουσίες, και μια υπηρεσία μπορεί να υλοποιήσει τη μία χωρίς τις άλλες. Μια πύλη που δέχεται τον αριθμό ως μοναδικό πεδίο δεν λέει τίποτα για το πώς το τούνελ ταυτοποιεί τον ομότιμό του αργότερα ούτε για το πώς παράγονται τα κλειδιά κίνησης.

Το γενικό μοντέλο είναι εύκολο να διατυπωθεί: ένα bearer διαπιστευτήριο είναι εκείνο που ο κάτοχος μπορεί να χρησιμοποιήσει χωρίς να αποδείξει κατοχή ξεχωριστού κρυπτογραφικού κλειδιού, και αυτή είναι η διάκριση που RFC 6750 χαράσσει για τα token. Είναι σύγκριση, όχι ισχυρισμός ότι μια υπηρεσία βασισμένη σε αριθμό υλοποιεί OAuth. Αν ο κάτοχος δεν χρειάζεται τίποτα άλλο, αντιμετωπίστε τον αριθμό ως bearer μυστικό και ταξινομήστε την υπόλοιπη σχεδίαση αναλόγως.

Προστατέψτε τον ως μυστικό, όχι ως αναφορά

Η αποθήκευση προκύπτει από την ταξινόμηση. Μια τιμή που συνδέει ανήκει σε διαχειριστή κωδικών, όχι σε στιγμιότυπο οθόνης, ιστορικό προχείρου, μήνυμα συνομιλίας ή σημείωση προγράμματος περιήγησης. Τα στιγμιότυπα οθόνης είναι η συνήθης διαρροή: ο αριθμός είναι σύντομος και φαίνεται ακίνδυνος, οπότε καταλήγει σε ένα νήμα υποστήριξης που επιβιώνει από τη συσκευή από την οποία προήλθε.

Το phishing είναι ο άλλος τρόπος αποτυχίας και δεν το ενδιαφέρει πόσο τυχαίος είναι ο αριθμός. Ένας απατεώνας που θέλει την τιμή θα σας ζητήσει να την επικολλήσετε σε μια φόρμα, και ένα διαπιστευτήριο που δεν λήγει ποτέ και δεν έχει δεύτερο παράγοντα αξίζει τον κόπο. Φτάστε στη διαδρομή σύνδεσης από σελιδοδείκτη ή γνωστή διεύθυνση, όχι από σύνδεσμο σε μήνυμα που ζητά επίσης τον αριθμό.

Αντιμετωπίστε το υλικό ανάκτησης ως μέρος του μυστικού. Αν ο πάροχος εξέδωσε επίσης κωδικό ανάκτησης, PIN ή διεύθυνση email που μπορεί να επαναφέρει τον λογαριασμό, είναι ξεχωριστά διαπιστευτήρια με την ίδια απαίτηση προστασίας. Ένα μη προστατευμένο κανάλι επαναφοράς μετατρέπει κάθε άλλο έλεγχο σε διακόσμηση.

Ελέγξτε μαζί την αντοχή στο μάντεμα και τον περιορισμό ρυθμού

Το μήκος έχει νόημα μόνο δίπλα στη μέθοδο παραγωγής. Ένας μακρύς αριθμός από προβλέψιμη ακολουθία είναι ασθενέστερος από μια σύντομη τιμή από κρυπτογραφική γεννήτρια, και ένα εντυπωσιακό πλήθος ψηφίων δεν αποδεικνύει μη προβλεψιμότητα. Ρωτήστε πώς παράγεται η τιμή πριν σκεφτείτε πόσο δύσκολο είναι να μαντέψει κανείς.

Η αντοχή στο μάντεμα από μόνη της δεν επιβιώνει ούτε από απεριόριστο ρυθμό προσπαθειών. Οι έλεγχοι που μετράνε είναι αυτοί που υλοποιεί ο πάροχος: μετρητές αποτυχημένων προσπαθειών, κλειδώματα, περιορισμός ανά πηγή και αν ένας λάθος αριθμός διακρίνεται από έναν ανύπαρκτο. Αν η υπηρεσία το υποστηρίζει, μία αποτυχημένη προσπάθεια δείχνει πώς μοιάζει το σφάλμα και αν εμφανίζεται μετρητής επαναλήψεων:

# one attempt, then read the response and any counter or delay
# do not script repeated guesses against a live account
curl -i -X POST https://portal.example.invalid/login -d "account=000000000000"

Καταγράψτε τι αποκαλύπτει η απάντηση. Ένα ξεχωριστό σφάλμα για άγνωστο λογαριασμό είναι μαντείο απαρίθμησης ακόμη και όταν ο αριθμός δεν μπορεί να μαντευτεί, και αυτό το εύρημα ανήκει στο αρχείο, είτε μπορείτε να το διορθώσετε από την πλευρά του πελάτη είτε όχι.

Σχεδιάστε την περιστροφή και την ανάκληση πριν τις χρειαστείτε

Βρείτε την υποστηριζόμενη διαδικασία για χαμένο ή εκτεθειμένο αριθμό και γράψτε την όσο όλα λειτουργούν. Μπορεί να αντικατασταθεί καθόλου το διαπιστευτήριο του λογαριασμού; Η αντικατάσταση ακυρώνει ήδη εγγεγραμμένες συσκευές, ενεργές συνεδρίες ή κατεβασμένη διαμόρφωση; Ποιο υλικό ανάκτησης απαιτεί η διαδικασία; Μια υπηρεσία χωρίς εξάρτηση από email μπορεί να μεταφέρει περισσότερη ευθύνη ανάκτησης στον χρήστη, κάτι που κάνει τη διαδικασία πιο σημαντική, όχι λιγότερο.

Διαχωρίστε την αντικατάσταση λογαριασμού από την ανάκληση διαπιστευτηρίου. Αν ο αριθμός εξουσιοδοτεί τη λήψη κλειδιού, πιστοποιητικού ή προφίλ, η αντικατάσταση του αριθμού μπορεί να αφήσει το κατεβασμένο υλικό έγκυρο, και η ανάκληση του κατεβασμένου υλικού μπορεί να είναι διαφορετική λειτουργία με διαφορετικό ιδιοκτήτη. Μην υποθέσετε ότι ένα αλλαγμένο πεδίο τερματίζει κάθε σύνδεση· ελέγξτε το πραγματικό μοντέλο του παρόχου και σημειώστε πού το επαληθεύσατε.

Τεκμηριώστε την απόφαση και ελέγξτε την ξανά αργότερα

Κρατήστε ένα αρχείο μίας σελίδας ανά υπηρεσία: ποιες εξουσίες παρέχει ο αριθμός, πού αποθηκεύεται, ποιος μπορεί να τον επαναφέρει, ποια στοιχεία χρήσης υπάρχουν και τι θα κάνατε την πρώτη ώρα μετά την αποκάλυψη. Αυτό το αρχείο μετατρέπει μια διαφωνία για την ορολογία σε απόφαση που κάποιος μπορεί να ελέγξει.

Οι ισχυρισμοί περί απορρήτου χρειάζονται το δικό τους πεδίο. Ένας τυχαία παραγόμενος αριθμός μπορεί ακόμη να είναι σταθερό αναγνωριστικό που συνδέει συμβάντα λογαριασμού στον χρόνο· η μη προβλεψιμότητα δεν είναι μη συνδεσιμότητα, και καμία από τις δύο ιδιότητες δεν λέει τίποτα για διατηρούμενα μεταδεδομένα δικτύου. Συγκρίνετε πλήρεις σχεδιάσεις αντί να μετράτε πεδία σε μια οθόνη σύνδεσης.

Πριν το καταχωρίσετε:

  • Αναφέρονται όλες οι εξουσίες που παρέχει ο αριθμός, συμπεριλαμβανομένων των λήψεων και της εξουσιοδότησης συσκευών.
  • Τα κανάλια αποθήκευσης και ανάκτησης προστατεύονται με το ίδιο πρότυπο όπως ο ίδιος ο αριθμός.
  • Η μέθοδος παραγωγής και τα όρια ρυθμού είναι γνωστά, όχι υποτιθέμενα από το μήκος.
  • Υπάρχουν διαδικασία αντικατάστασης και διαδικασία ανάκλησης, και ξέρετε ποια ακυρώνει ποια.
  • Το αρχείο αναφέρει ποιος μπορεί να επαναφέρει την τιμή και ποια στοιχεία παραμένουν μετά τη χρήση.

Σχετικά άρθρα