Heim > Backend-Entwicklung > PHP-Tutorial > Sollte ich Benutzerkennwörter bereinigen, bevor ich sie hashe?

Sollte ich Benutzerkennwörter bereinigen, bevor ich sie hashe?

DDD
Freigeben: 2024-12-31 04:27:08
Original
266 Leute haben es durchsucht

Should I Cleanse User Passwords Before Hashing Them?

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 !". Die Anwendung verschiedener Desinfektionsmethoden führt zu unterschiedlichen Ergebnissen:

  • trim() entfernt nachgestellte Leerzeichen
  • htmlentities() und htmlspecialchars() kodieren Sonderzeichen und doppelte Anführungszeichen
  • addslashes( ) fügt Escape-Zeichen hinzu
  • strip_tags() entfernt HTML Tags

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage