Best Practices: sicherste Methode zum Speichern von Passwörtern in einer Tabelle? [geschlossen]

StackOverflow https://stackoverflow.com/questions/1592608

Frage

Ich bin mit PHP. Ich benutzte nativen MySQL-Funktion Passwort verwenden () zum Speichern von Passwörtern. Ich habe das Passwort gesagt () ist nicht mehr sicher. Was wäre die beste Methode zum Speichern von Passwörtern in PHP? ist es MD5?

War es hilfreich?

Lösung

Aktualisiert Antwort 2016:

Der Gewinner des PHC (Kennwort-Hashing Competion) war Argon2 . Hashing Passwörter mit Argon2 ist die beste Praxis ab 2016.

  

lief PHC 2013-2015 als offener wettbewerbs die gleiche Art von Verfahren, wie NIST AES und SHA-3-Wettbewerben und der effektivste Weg, um einen Krypto-Standard zu entwickeln. Wir erhielten 24 Kandidaten, darunter viele ausgezeichnete Designs und ausgewählten Gewinner, Argon2, einen Algorithmus entworfen von Alex Biryukov, Daniel Dinu und Dmitry Khovratovich von der Universität Luxemburg.

     

Wir empfehlen, dass die Verwendung Sie Argon2 verwenden, anstatt Legacy-Algorithmen.

Die Referenzimplementierung ist auf GitHub zur Verfügung.

Aktualisiert Antwort 2012:

Die ursprüngliche Antwort, die ich weiter unten ergeben, wurde einst als eine bewährte Methode sein. Doch Fortschritte in der Hash-Computing-Technologie haben diese Systeme anfällig gemacht. Für die Zukunft sind die einzigen sicheren Passwort-Hashing-Systeme iterative Hashes wie bcrypt und PBKDF2 . siehe Eine vollständige Diskussion Jeff Atwood Analyse .

Original Antwort 2009:

Ich empfehle das Voranstellen zunächst eine Salz Wert auf Ihr Passwort, gefolgt von < a href = "http://en.wikipedia.org/wiki/Cryptographic_hash_function" rel = "nofollow noreferrer"> Hashing den resultierenden String mit einer einigermaßen starken Hash-Funktion wie SHA256 . Dies sichert gegen die offensichtlichen (Klartext-Passwörter) und die nicht so offensichtlich (Angriff mit Rainbow Tables ).

Beachten Sie, dass, wenn Sie speichern Kennwörter auf diese Weise, werden Sie nicht der Lage sein, ein Benutzer verlorenes Passwort abzurufen. Sie werden nur in der Lage sein, Passwörter zurücksetzen. Dies ist, weil Sie eine einen Weg Hash . Aber diese Einschränkung ist in der Regel lohnt sich der Kompromiss für ein sicheres Passwort-Speichersystem. Selbst wenn Ihre Datenbank gefährdet ist, Passwörter Ihrer Benutzer nach wie vor äußerst schwierig sein wird, und wahrscheinlich unpraktische von einem Angreifer sein würde sich zu erholen.

Andere Tipps

Sie müssen das Kennwort Salz.

tut vBulletin einen ziemlich guten Job bei Passwörter zu speichern. md5 (md5 (Passwort) + Salz);

Um mit der anderen Antwort zu argumentieren, tut VBulletin einen schrecklichen Job Passwörter von Hashing. Ihr Salz ist nur 3 Zeichen lang ist, nur geringfügig um die Sicherheit Ihrer Anwendung zu erhöhen.

Schauen Sie sich http://www.openwall.com/phpass/ . Sie machen eine hervorragende Arbeit einen langen Hash verwenden, einzigartig für jedes Passwort, und läuft das Passwort durch md5 tausende Male. Es ist eines der besten Hashing-Systeme für PHP gibt.

Wenn Sie vermeiden können, das Benutzerkennwort zu speichern, die beste Wahl ist, imo. Verwenden OpenId (wie Stackoverflow), um den Benutzer zu authentifizieren. Oder Live-Authentifizierung ( http://dev.live.com/liveid/ ). Wenn Sie wirklich, wirklich brauchen die Benutzer sich zu authentifizieren; tun, was Asaph in seiner Antwort sagt. :)

Salz und Hash.

Wir in der Regel eine zufällige GUID als das Salz verwenden und dann SHA512 Hash zu.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top