Πώς να αποθηκεύσετε και να επαληθεύσετε έναν κωδικό πρόσβασης;

  • Ο σωστός τρόπος αποθήκευσης
  • Γιατί να χτίσω;
  • Γιατί να χρησιμοποιείτε αλάτι;
  • Γιατί να προσθέσετε τα στοιχεία σύνδεσης;
  • Επαλήθευση

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

Υπάρχει καλή πρακτική να αποθηκεύσετε έναν κωδικό πρόσβασης.

Ο σωστός τρόπος αποθήκευσης

Αποθηκεύστε τα στοιχεία σύνδεσης και το hash (login + password + salt)

Ψευδοκώδικας : passwordHash = MD5MD5 ( κωδικός πρόσβασης + "zo5pro $ 1pvkhj6 * cz4a8ùtvb # ui4oeuio" + κωδικός πρόσβασης)

Αποθήκευση και κωδικό πρόσβασηςHash login. Μην αποθηκεύετε τον κωδικό πρόσβασης.

Γιατί να χτίσω;

Δεν πρέπει ποτέ να αποθηκεύουμε τον κωδικό πρόσβασης σε καθαρό κείμενο.

  • Κίνδυνος: Αν κάποιος σπάσει στη βάση δεδομένων σας κωδικούς πρόσβασης, μπορεί να τις ανακτήσει και να τις χρησιμοποιήσει άμεσα.
  • Προστασία: Ο κατακερματισμός που χρησιμοποιείται για τον υπολογισμό ενός δακτυλικού αποτυπώματος του κωδικού πρόσβασης. Καθώς ο αλγόριθμος δεν είναι αναστρέψιμος, δεν μπορεί να βρει αμέσως τον κωδικό πρόσβασης από το hash.
  • Αυτός είναι ο λόγος για τον οποίο χρησιμοποιούμε κρυπτογραφικό κατακερματισμό. Συνήθως MD5, SHA-1 ή άλλο (SHA-256, SHA-512 ...)
  • Ποτέ μην χρησιμοποιείτε CRC ή CRC32 .

Γιατί να χρησιμοποιείτε αλάτι;

Τα τραπέζια ουράνιου τόξου είναι μεγάλα τραπέζια που περιέχουν κατακερματισμό (MD5 και άλλα) προ-υπολογισμένα.

Αυτό σας επιτρέπει να βρείτε γρήγορα τον κωδικό πρόσβασης που έδωσε ένα συγκεκριμένο hash.

Κίνδυνος : Εάν χρησιμοποιείτε μόνο MD5 (κωδικό πρόσβασης), οι πίνακες ουράνιου τόξου επιτρέπουν την ανάκτηση του κωδικού πρόσβασης στο MD5 σε λεπτά, ακόμη και δευτερόλεπτα.

Προστασία : Χρησιμοποιώντας ένα αλάτι, αυτό κάνει τα τραπέζια ουράνιου τόξου εντελώς περιττά.

Το αλάτι είναι μια αυθαίρετη τιμή, το μήκος της επιλογής σας. Ορίστε την ως σταθερά στην αίτησή σας.

Γιατί να προσθέσετε τα στοιχεία σύνδεσης;

Εάν αποθηκεύετε απλώς MD5 (salt + password) ή MD5 (κωδικός πρόσβασης), αυτό σημαίνει ότι δύο χρήστες με τον ίδιο κωδικό πρόσβασης θα έχουν το ίδιο hash.

  • Κίνδυνος: Μπορείτε εύκολα να εντοπίσετε τους χρήστες με τον ίδιο κωδικό πρόσβασης. Εάν ο χρήστης είναι σε κίνδυνο, επιτρέπει την άμεση πρόσβαση σε άλλους χρήστες (οι οποίοι ενδέχεται να έχουν μεγαλύτερα δικαιώματα).
  • Προστασία: Με την προσθήκη της σύνδεσης πριν από τον κατακερματισμό, το αποτέλεσμα MD5 θα είναι διαφορετικό για κάθε χρήστη, ακόμα και αν έχει τον ίδιο κωδικό πρόσβασης.

Επαλήθευση

Όταν λάβετε login και password, απλά επαναλάβετε τον ίδιο υπολογισμό:

  • Κοιτάξτε στη βάση σας, για το hash για αυτή τη σύνδεση
  • Συγκρίνετε την τιμή κατακερματισμού (login + salt + password)
  • Εάν τα δύο hashes είναι πανομοιότυπα, ο κωδικός που εισάγεται είναι σωστός.

Χάρη στην sebsauvage για αυτό το άκρο.

Προηγούμενο Άρθρο Επόμενο Άρθρο

Οι Καλύτερες Συμβουλές