Benutzerkennwörter bereinigen
Bei der Entwicklung sicherer Anwendungen ziehen Entwickler häufig in Betracht, von Benutzern bereitgestellte Kennwörter zu bereinigen, bevor sie verschlüsselt gespeichert werden. Die Anwendung von Bereinigungsmechanismen auf Passwörter vor dem Hashing bringt jedoch bestimmte Komplikationen mit sich.
Vermeiden Sie die Bereinigung von Passwörtern vor dem Hashing
Es ist von größter Bedeutung, die Bereinigung von Passwörtern mit Funktionen wie escape_string( ), htmlspecialchars() oder addslashes(). Der Hauptgrund dafür ist, dass eine solche Vorverarbeitung redundant und unnötig ist.
Hashes, die von der PHP-Funktion „password_hash()“ generiert werden, die üblicherweise zur Passwortspeicherung verwendet wird, stellen keine Bedrohung durch SQL-Injection dar. Der Hashing-Prozess wandelt das Passwort in einen Hash um, der nicht durch SQL-Injection ausgenutzt werden kann.
Hashes bieten Sicherheit ohne Bereinigung
Hashing-Funktionen weisen bestimmten Zeichen keine besondere Bedeutung zu ; Daher ist aus Sicherheitsgründen keine Reinigung erforderlich. Dadurch, dass Benutzer jedes gewünschte Passwort angeben können, einschließlich Leerzeichen und Sonderzeichen, gewährleistet Hashing die Sicherheit des Passworts, unabhängig von seinem Inhalt.
Überlegungen zur Speicherung
Während der Standardeinstellung Da die Hashing-Methode (PASSWORD_BCRYPT) einen 60 Zeichen breiten Hash generiert, wird empfohlen, mehr Speicherplatz zuzuweisen, z. B VARCHAR(255) oder TEXT, um potenzielle zukünftige Änderungen in Hashing-Algorithmen zu berücksichtigen.
Beispiel für die Unwirksamkeit der Bereinigung
Betrachten Sie das Passwort „Ich bin ein“ als Dessert-Topping " & ein
Diese Transformationen haben jedoch keinen Einfluss auf die Sicherheit des gehashten Passworts. „password_verify()“ wird nur dann erfolgreich sein, wenn die gleiche Bereinigungsmethode sowohl auf das bereitgestellte Passwort als auch auf das aus der Datenbank abgerufene gehashte Äquivalent angewendet wird.
Schlussfolgerung
Abschließend: Vermeiden Sie Bereinigen von Passwörtern vor dem Hashing mit „password_hash()“. Dies ist unnötig und führt zu Komplexität. Verlassen Sie sich stattdessen auf die Sicherheit, die Hashing-Algorithmen bieten, und berücksichtigen Sie deren potenziellen Speicherbedarf.
Das obige ist der detaillierte Inhalt vonSollte ich Benutzerkennwörter bereinigen, bevor ich sie hashe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!