Γιατί είναι κακή ιδέα:
* Εμπορικά διαπιστευτήρια: Η γνώση του υπάρχοντος κωδικού πρόσβασης ενός χρήστη υποδηλώνει έντονα ότι ο λογαριασμός του χρήστη έχει ήδη παραβιαστεί. Ο επιτιθέμενος πιθανότατα γνωρίζει τον ίδιο κωδικό πρόσβασης. Η αλλαγή του κωδικού πρόσβασης χρησιμοποιώντας τον υπάρχοντα κωδικό πρόσβασης ως επαλήθευση δεν καταργεί την πρόσβαση του εισβολέα. Μπορούν απλά να το αλλάξουν πίσω ή να συνεχίσουν να χρησιμοποιούν υπάρχουσες συνεδρίες.
* Παραβίαση εμπιστοσύνης: Οι χρήστες αναμένουν ότι οι κωδικοί πρόσβασής τους θα είναι γνωστοί μόνο στον εαυτό τους (και ίσως αλατισμένα και χαστούκια αντίγραφα στο σύστημα). Αποδεικνύοντας ότι γνωρίζετε ότι ο κωδικός πρόσβασής τους καταστρέφει αυτήν την εμπιστοσύνη και δημιουργεί έναν τεράστιο κίνδυνο ασφάλειας.
* Θέματα διαδρομής ελέγχου: Η επαναφορά ενός κωδικού πρόσβασης "για" έναν χρήστη χωρίς γνώση ή εκκίνηση καθιστά δύσκολη την παρακολούθηση ποιος πραγματικά ξεκίνησε την αλλαγή και γιατί. Αυτό μπορεί να εμποδίσει τις έρευνες για περιστατικά ασφαλείας.
* παράκαμψη του ελέγχου ταυτότητας πολλαπλών παραγόντων (MFA): Εάν το MFA είναι ενεργοποιημένο, γνωρίζοντας μόνο τον κωδικό πρόσβασης * δεν πρέπει * να είναι αρκετό για να επαναφέρετε το λογαριασμό. Η επαναφορά με μόνο τον υπάρχοντα κωδικό πρόσβασης παρακάμπτει τον κρίσιμο δεύτερο παράγοντα.
* Δυναμικό για κατάχρηση: Δίνοντας στους διαχειριστές τη δυνατότητα να επαναφέρουν τους κωδικούς πρόσβασης γνωρίζοντας ότι οι τρέχουσες ανοίγουν την πόρτα σε κακόβουλους εμπιστευματοδόχους που επαναφέρουν τους λογαριασμούς για κακούς σκοπούς (κατασκοπεία, κλοπή δεδομένων κλπ.).
* Παραβιάσεις συμμόρφωσης ασφαλείας: Πολλά πρότυπα ασφαλείας (PCI DSS, HIPAA, SOC 2) απαιτούν ισχυρές πρακτικές διαχείρισης κωδικών πρόσβασης, συμπεριλαμβανομένης της πρόληψης των διαχειριστών από τη γνώση ή τη χρήση κωδικών πρόσβασης χρήστη.
Τι πρέπει να κάνετε αντ 'αυτού (αντιμετωπίστε το ως συμβιβασμένο λογαριασμό):
1. Αναγκάστε μια επαναφορά κωδικού πρόσβασης στην επόμενη σύνδεση: Αυτό είναι το * ελάχιστο * που πρέπει να κάνετε. Ο χρήστης θα ζητηθεί να δημιουργήσει έναν νέο κωδικό πρόσβασης * την επόμενη φορά που θα συνδεθούν.
2. ΔΗΜΙΟΥΡΓΙΑ ΔΙΑΚΟΠΤΗΣ ΟΛΕΣ Τερματίστε αμέσως όλες τις ενεργές συνεδρίες για τον πληγμένο χρήστη. Αυτό εμποδίζει έναν εισβολέα που έχει ήδη αποκτήσει πρόσβαση από τη συνέχιση της χρήσης αυτών των συνεδριών.
3. Εάν ο χρήστης έχει κλειδιά API, μάρκες OAuth ή άλλους μηχανισμούς εξουσιοδότησης, τα ανακαλέστε αμέσως. Ένας εισβολέας μπορεί να έχει χρησιμοποιήσει τον συμβιβασμένο κωδικό πρόσβασης για να δημιουργήσει νέα πλήκτρα/μάρκες.
4. Διερεύνηση: Διερευνήστε διεξοδικά τον τρόπο με τον οποίο ο κωδικός πρόσβασης διακυβεύεται. Ήταν μια επίθεση phishing; Αδύναμος κωδικός πρόσβασης; Παραβίαση δεδομένων σε άλλο ιστότοπο; Προσδιορίστε τη βασική αιτία για την πρόληψη των μελλοντικών συμβιβασμών. Αναζητήστε οποιαδήποτε ύποπτη δραστηριότητα που συνέβη από τότε που ο λογαριασμός διακυβεύεται (π.χ. μη εξουσιοδοτημένη πρόσβαση, εξαίρεση δεδομένων).
5. Ενεργοποίηση MFA (αν όχι ήδη): Εφαρμογή ελέγχου ταυτότητας πολλαπλών παραγόντων για όλους τους χρήστες. Αυτό προσθέτει ένα κρίσιμο στρώμα ασφάλειας που καθιστά πολύ πιο δύσκολο για τους επιτιθέμενους να αποκτήσουν πρόσβαση ακόμη και αν γνωρίζουν τον κωδικό πρόσβασης.
6. Ανασκόπηση αρχείων καταγραφής ασφαλείας: Εξετάστε προσεκτικά τα αρχεία καταγραφής δραστηριοτήτων του χρήστη για τυχόν σημάδια μη εξουσιοδοτημένης πρόσβασης, τροποποίησης δεδομένων ή άλλης ύποπτης συμπεριφοράς.
7. ενημερώστε τον χρήστη: Ενημερώστε αμέσως τον χρήστη ότι ο λογαριασμός του έχει συμβιβαστεί ενδεχομένως και ότι πρέπει να δημιουργήσουν έναν ισχυρό, μοναδικό κωδικό πρόσβασης. Εκπαιδεύστε τους για το phishing και άλλες απειλές για την ασφάλεια. Εξηγήστε τα βήματα που έχετε λάβει για να εξασφαλίσετε τον λογαριασμό τους.
8. Εξετάστε έναν πλήρη έλεγχο ασφαλείας: Εάν ένας μόνο λογαριασμός διακυβεύεται, μπορεί να υποδηλώνει ευρύτερη ευπάθεια ασφαλείας στο σύστημα. Εξετάστε τη διεξαγωγή ενός ολοκληρωμένου ελέγχου ασφαλείας για τον εντοπισμό και την αντιμετώπιση οποιωνδήποτε άλλων πιθανών αδυναμιών.
Τεχνική εφαρμογή εφαρμογής (αν πρέπει απολύτως - αλλά και πάλι, αποφύγετε αυτό *):
Εάν, παρά όλες τις προειδοποιήσεις παραπάνω, έχετε μια πολύ συγκεκριμένη και ασυνήθιστη κατάσταση όπου πιστεύετε ότι * πρέπει * να επαναφέρετε τον κωδικό πρόσβασης ενώ γνωρίζετε την παλιά, η διαδικασία * μπορεί * να περιλαμβάνει τα ακόλουθα (αλλά να γνωρίζετε τις συνέπειες της ασφάλειας):
1. Πρόσβαση βάσης δεδομένων (εξαιρετικά επικίνδυνη):
* Εάν οι κωδικοί πρόσβασης δεν αποθηκεύονται με ασφάλεια (π.χ., όχι αλατισμένοι και χαστούκοι), είστε ήδη σε πολύ κακή κατάσταση.
* Θα χρειαστείτε άμεση πρόσβαση στη βάση δεδομένων όπου αποθηκεύονται τα διαπιστευτήρια χρήστη.
* Θα εντοπίσατε την εγγραφή του χρήστη και * προσεκτικά * ενημερώστε το πεδίο κωδικού πρόσβασης με έναν νέο, ισχυρό, τυχαία παραγόμενο κωδικό πρόσβασης.
* Θα πρέπει να διασφαλίσετε ότι ο νέος κωδικός πρόσβασης είναι κατάλληλα αλατισμένος και χαστούκι χρησιμοποιώντας τον ίδιο αλγόριθμο με τους υπάρχοντες κωδικούς πρόσβασης.
2.
* Ορισμένα συστήματα * μπορεί να έχουν ένα τελικό σημείο διαχείρισης API σχεδιασμένο για την επαναφορά των κωδικών πρόσβασης των χρηστών.
* *Ιδανικά *, αυτό το τελικό σημείο θα απαιτούσε ισχυρή έλεγχο ταυτότητας και εξουσιοδότηση για να αποφευχθεί η μη εξουσιοδοτημένη χρήση.
* Το τελικό σημείο * μπορεί να σας επιτρέψει να καθορίσετε το όνομα χρήστη ή το αναγνωριστικό του χρήστη και να δώσετε έναν νέο κωδικό πρόσβασης.
* *Ακόμη και σε αυτή την περίπτωση *, βεβαιωθείτε ότι το τελικό σημείο API είναι σωστά ασφαλισμένο και ελεγχόμενο.
Παράδειγμα (εννοιολογική - και πάλι, αποθαρρύνοντας):
`` `Python
Εισαγωγή hashlib
εισαγωγή λειτουργικού συστήματος
def reset_password_with_existing (Όνομα χρήστη, old_password, new_password, db_connection):
"" "
Μην το χρησιμοποιείτε στην παραγωγή. Αυτό είναι μόνο για επεξηγηματικούς σκοπούς.
Αυτή η λειτουργία καταδεικνύει πώς μπορείτε να επαναφέρετε θεωρητικά έναν κωδικό πρόσβασης
Γνωρίζοντας το παλιό, αλλά είναι μια τρομερή πρακτική ασφάλειας.
"" "
δρομέας =db_connection.cursor ()
# 1. Ανακτήστε το αλάτι του χρήστη και τον κωδικό πρόσβασης από τη βάση δεδομένων. (Υποθέτει ότι είναι αποθηκευμένο με αυτόν τον τρόπο)
CRORSOR.Execute ("Επιλέξτε αλάτι, hashed_password από χρήστες όπου όνομα χρήστη =%s", (όνομα χρήστη)))
Αποτέλεσμα =Corsor.fetchone ()
Εάν δεν είναι αποτέλεσμα:
εκτύπωση ("Ο χρήστης δεν βρέθηκε.")
Επιστρέψτε ψευδώς
αλάτι, αποθηκευμένο_hashed_password =αποτέλεσμα
# 2. Επαληθεύστε τον παλιό κωδικό πρόσβασης (χρησιμοποιώντας τον αποθηκευμένο αλγόριθμο αλάτι και κατακερματισμού).
hashed_old_password =hashlib.sha256 ((old_password + αλάτι) .encode ('utf-8')). HexDigest ()
Εάν hashed_old_password! =αποθηκευμένο_hashed_password:
εκτύπωση ("Λανθασμένος παλιός κωδικός πρόσβασης.")
Επιστρέψτε ψευδώς
# 3. Δημιουργήστε ένα νέο αλάτι και κατακερματίστε τον νέο κωδικό πρόσβασης.
new_salt =os.urandom (16) .hex () # Δημιουργήστε ένα ισχυρό τυχαίο αλάτι
hashed_new_password =hashlib.sha256 ((new_password + new_salt) .encode ('utf-8')) HexDigest ()
# 4. Ενημερώστε την εγγραφή του χρήστη στη βάση δεδομένων με το νέο αλάτι και τον κωδικό πρόσβασης.
CRORSOR.EXECUTE ("Ενημέρωση χρηστών Ορίστε αλάτι =%S, hashed_password =%s όπου όνομα χρήστη =%s",
(new_salt, hashed_new_password, όνομα χρήστη))
db_connection.commit ()
εκτύπωση ("Επαναφορά κωδικού πρόσβασης (αλλά αυτή ήταν μια κακή ιδέα!).")
Επιστρέψτε το TRUE
`` `
Σημαντικές εκτιμήσεις:
* Αλγόριθμοι κατακερματισμού: Χρησιμοποιήστε ισχυρούς και σύγχρονους αλγόριθμους hashing όπως BCrypt, Scrypt ή Argon2. Το SHA-256 (όπως φαίνεται στο παράδειγμα) είναι καλύτερος από το MD5 ή το SHA-1, αλλά εξακολουθεί να μην είναι η καλύτερη επιλογή για hashing κωδικού πρόσβασης.
* Salting: Χρησιμοποιείτε πάντα ένα μοναδικό, τυχαία παραγόμενο αλάτι για κάθε κωδικό πρόσβασης. Τα άλατα εμποδίζουν τις επιθέσεις τραπεζιού ουράνιου τόξου.
* Πολιτικές πολυπλοκότητας κωδικού πρόσβασης: Επιβάλλετε ισχυρούς κανόνες πολυπλοκότητας κωδικού πρόσβασης (ελάχιστο μήκος, απαιτήσεις χαρακτήρων).
* Κανονική περιστροφή κωδικού πρόσβασης: Ενθαρρύνετε τους χρήστες να αλλάζουν τακτικά τους κωδικούς πρόσβασης.
* Διαχειριστές κωδικού πρόσβασης: Προωθήστε τη χρήση διαχειριστών κωδικών πρόσβασης για να βοηθήσετε τους χρήστες να δημιουργήσουν και να αποθηκεύσουν ισχυρούς, μοναδικούς κωδικούς πρόσβασης.
Συνοπτικά:Η δυνατότητα επαναφοράς του κωδικού πρόσβασης ενός χρήστη γνωρίζοντας ότι ο τρέχων κωδικός πρόσβασής του είναι μια επικίνδυνη πρακτική. Πάντα να το αντιμετωπίζετε ως ένδειξη συμβιβασμού και να ακολουθήσετε τα συνιστώμενα βήματα για να εξασφαλίσετε τον λογαριασμό και να διερευνήσετε την παραβίαση.
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα