Ένας από τους καλύτερους τρόπους για να αποθηκεύσετε τους κωδικούς πρόσβασης με ασφάλεια είναι να τους αλατίσετε και να τους κατακερματίσετε. Το αλάτισμα και ο κατακερματισμός μετατρέπουν έναν απλό κωδικό πρόσβασης σε μια μοναδική τιμή που είναι δύσκολο να αντιστραφεί. Η βιβλιοθήκη bcrypt σάς επιτρέπει να κατακερματίσετε και να αλατίσετε τους κωδικούς πρόσβασης στο Node.js με πολύ λίγη προσπάθεια.
Τι είναι το Password Hashing;
Κατακερματισμός κωδικού πρόσβασης σημαίνει τη διαβίβαση ενός κωδικού πρόσβασης απλού κειμένου μέσω ενός αλγόριθμου κατακερματισμού για τη δημιουργία μιας μοναδικής τιμής. Μερικά παραδείγματα αλγορίθμων κατακερματισμού είναι τα bcrypt, scrypt και SHA. Το μειονέκτημα του κατακερματισμού είναι ότι είναι προβλέψιμο.
Κάθε φορά που περνάτε την ίδια είσοδο σε έναν αλγόριθμο κατακερματισμού, θα δημιουργεί την ίδια έξοδο. Ένας χάκερ με πρόσβαση στον κατακερματισμένο κωδικό πρόσβασης μπορεί να αναστρέψει την κρυπτογράφηση για να πάρει τον αρχικό κωδικό πρόσβασης. Μπορούν να χρησιμοποιούν τεχνικές όπως π.χ
επιθέσεις ωμής βίας ή τραπέζια ουράνιου τόξου. Εδώ μπαίνει το αλάτισμα.Τι είναι το Password Salting;
Αλάτισμα κωδικού προσθέτει μια τυχαία συμβολοσειρά (το αλάτι) σε έναν κωδικό πρόσβασης πριν τον κατακερματίσει. Με αυτόν τον τρόπο, ο κατακερματισμός που δημιουργείται θα είναι πάντα διαφορετικός κάθε φορά. Ακόμα κι αν ένας χάκερ αποκτήσει τον κατακερματισμένο κωδικό πρόσβασης, δεν είναι πρακτικό γι' αυτόν να ανακαλύψει τον αρχικό κωδικό πρόσβασης που τον δημιούργησε.
Πώς να χρησιμοποιήσετε το bcrypt για να κατακερματίσετε και να επαληθεύσετε έναν κωδικό πρόσβασης
bcrypt είναι μια λειτουργική μονάδα npm που απλοποιεί το αλάτισμα και τον κατακερματισμό κωδικών πρόσβασης.
Βήμα 1: Εγκαταστήστε το bcrypt
Χρήση npm:
npm εγκαθιστώ bcrypt
Χρήση νήματος:
νήμα προσθήκη bcrypt
Βήμα 2: Εισαγωγή bcrypt
συνθ bcrypt = απαιτώ("bcrypt")
Βήμα 3: Δημιουργήστε ένα αλάτι
Για να δημιουργήσετε το αλάτι, καλέστε το bcrypt.genSalt() μέθοδος. Αυτή η μέθοδος δέχεται μια ακέραια τιμή που είναι ο παράγοντας κόστους που καθορίζει το χρόνο που απαιτείται για τον κατακερματισμό ενός κωδικού πρόσβασης. Όσο υψηλότερος είναι ο παράγοντας κόστους, τόσο περισσότερος χρόνος χρειάζεται ο αλγόριθμος και τόσο πιο δύσκολο είναι να αντιστραφεί ο κατακερματισμός χρησιμοποιώντας ωμή βία. Μια καλή τιμή θα πρέπει να είναι αρκετά υψηλή για να ασφαλίσει τον κωδικό πρόσβασης αλλά και αρκετά χαμηλή ώστε να μην επιβραδύνει τη διαδικασία. Συνήθως κυμαίνεται μεταξύ 5 και 15. Σε αυτό το σεμινάριο, θα χρησιμοποιήσουμε 10.
bcrypt.genSalt (10, (err, salt) => {
// χρήσηάλαςπρος τηνχασίσιΚωδικός πρόσβασης
})
Βήμα 4: Κατακερματίστε τον κωδικό πρόσβασης
Περάστε τον απλό κωδικό πρόσβασης και το αλάτι που δημιουργήθηκε στο χασίσι() μέθοδος:
bcrypt.genSalt (10, (err, salt) => {
bcrypt.hash (plaintextPassword, salt, λειτουργία(λάθος, κατακερματισμός) {
// Αποθήκευση κατακερματισμού στη βάση δεδομένων
});
})
Μόλις δημιουργήσετε τον κατακερματισμό, αποθηκεύστε τον στη βάση δεδομένων. Θα το χρησιμοποιήσετε για να επαληθεύσετε έναν κωδικό πρόσβασης και να ελέγξετε την ταυτότητα ενός χρήστη που προσπαθεί να συνδεθεί.
Αντί να δημιουργείτε το salt και το hash ξεχωριστά, μπορείτε επίσης να δημιουργήσετε αυτόματα το salt και το hash χρησιμοποιώντας μία μόνο λειτουργία.
bcrypt.hash (plaintextPassword, 10, λειτουργία(λάθος, κατακερματισμός) {
// αποθήκευση κατακερματισμού στη βάση δεδομένων
});
Βήμα 5: Συγκρίνετε τους κωδικούς πρόσβασης χρησιμοποιώντας το bcrypt
Προς την έλεγχος ταυτότητας χρηστών, θα χρειαστεί να συγκρίνετε τον κωδικό πρόσβασης που παρέχουν με αυτόν στη βάση δεδομένων. bcrypt.compare() αποδέχεται τον κωδικό πρόσβασης απλού κειμένου και τον κατακερματισμό που έχετε αποθηκεύσει, μαζί με μια λειτουργία επανάκλησης. Αυτή η επανάκληση παρέχει ένα αντικείμενο που περιέχει τυχόν σφάλματα που προέκυψαν και το συνολικό αποτέλεσμα από τη σύγκριση. Εάν ο κωδικός πρόσβασης ταιριάζει με τον κατακερματισμό, το αποτέλεσμα είναι αληθές.
bcrypt.compare (plaintextPassword, hash, λειτουργία(λάθος, αποτέλεσμα) {
αν (αποτέλεσμα) {
// ο κωδικός πρόσβασης είναι έγκυρος
}
});
Χρήση Async/Await
Μπορείτε να κατακερματίσετε και να επαληθεύσετε τους κωδικούς πρόσβασης χρησιμοποιώντας async/wait ως εξής.
ασυγχρονισμόςλειτουργίαhashpassword(plaintextPassword) {
συνθ κατακερματισμός = αναμένω bcrypt.hash (plaintextPassword, 10);
// Αποθήκευση κατακερματισμού στη βάση δεδομένων
}
// σύγκριση κωδικού πρόσβασης
ασυγχρονισμόςλειτουργίασυγκρίνετε τον κωδικό πρόσβασης(plaintextΚωδικός πρόσβασης, κατακερματισμός) {
συνθ αποτέλεσμα = αναμένω bcrypt.compare (plaintextPassword, hash);
ΕΠΙΣΤΡΟΦΗ αποτέλεσμα;
}
Χρήση υποσχέσεων
Η βιβλιοθήκη bcrypt υποστηρίζει επίσης τη χρήση υποσχέσεων.
λειτουργίαhashpassword(plaintextPassword) {
bcrypt.χασίσι(plaintextPassword, 10)
.τότε (hash => {
// Αποθήκευση κατακερματισμού στη βάση δεδομένων
})
.σύλληψη(λάθος => {
κονσόλα.log (σφάλμα)
})
}
λειτουργίασυγκρίνετε τον κωδικό πρόσβασης(plaintextΚωδικός πρόσβασης, κατακερματισμός) {
bcyrpt.συγκρίνω(plaintextPassword, χασίσι)
.τότε (αποτέλεσμα => {
ΕΠΙΣΤΡΟΦΗ αποτέλεσμα
})
.σύλληψη(λάθος => {
κονσόλα.log (σφάλμα)
})
}
Ο κατακερματισμός και το αλάτισμα είναι μια εύκολη νίκη
Μπορείτε να χρησιμοποιήσετε τη βιβλιοθήκη bcrypt για να κατακερματίσετε και να επαληθεύσετε τους κωδικούς πρόσβασης στο Node.js. Ο κατακερματισμός κωδικών πρόσβασης ελαχιστοποιεί τις πιθανότητες να τους χρησιμοποιούν οι εγκληματίες του κυβερνοχώρου για πρόσβαση σε ευαίσθητα δεδομένα ή υπηρεσίες. Η αλάτιση των κατακερματισμένων κωδικών πρόσβασης τους καθιστά ακόμη πιο ασφαλείς. Εκτός από τον κατακερματισμό, επικυρώνετε πάντα την ισχύ του κωδικού πρόσβασης ως πρόσθετο μέτρο ασφαλείας.
Τα 8 πιο κοινά κόλπα που χρησιμοποιούνται για να χακάρετε τους κωδικούς πρόσβασης
Διαβάστε Επόμενο
Σχετικά θέματα
- Προγραμματισμός
- Ασφάλεια
- Προγραμματισμός
- JavaScript
- Ασφάλεια
- Αλγόριθμοι
Σχετικά με τον Συγγραφέα
Η Mary Gathoni είναι μια προγραμματίστρια λογισμικού με πάθος για τη δημιουργία τεχνικού περιεχομένου που δεν είναι μόνο ενημερωτικό αλλά και συναρπαστικό. Όταν δεν κωδικοποιεί ή δεν γράφει, της αρέσει να κάνει παρέα με φίλους και να βρίσκεται σε εξωτερικούς χώρους.
Εγγραφείτε στο ενημερωτικό μας δελτίο
Εγγραφείτε στο ενημερωτικό μας δελτίο για συμβουλές τεχνολογίας, κριτικές, δωρεάν ebook και αποκλειστικές προσφορές!
Κάντε κλικ εδώ για να εγγραφείτε