2014-03-13 17 views
13

Was ist der Unterschied zwischen PASSWORD_DEFAULT und PASSWORD_BCRYPT? Verwenden beide den Blowfish-Verschlüsselungsalgorithmus? Was kostet ein Algorithmus? Wie man password_hash in PHP einrichtet, produziert eine 255-hash Länge anstelle von 60?PASSWORD_DEFAULT vs PASSWORD_BCRYPT

PASSWORD_DEFAULT - Verwenden Sie den bcrypt Algorithmus (Standard ab PHP 5.5.0): zukunftssicher

Aus der Dokumentation sein

+1

Warum möchten Sie eine 255 Zeichen Hash anstelle der erzeugten 60 Zeichen Hash? –

+0

Verlangsamen BruteForce-Angriffe? – rexhin

+0

Ein längerer Hash wird nichts tun, um Brute-Force-Angriffe zu verlangsamen, kostet das für Sie .... länger! == sicherer oder langsamer –

Antwort

21

Gegenwärtig wird PASSWORD_BCRYPT als einziger Algorithmus unterstützt (unter Verwendung von CRYPT_BLWFISH), daher besteht derzeit kein Unterschied zwischen PASSWORD_DEFAULT und PASSWORD_BCRYPT. Der Zweck von PASSWORD_DEFAULT ist es, die Einbeziehung zusätzlicher Algorithmen in der Zukunft zu ermöglichen, woraufhin PASSWORD_DEFAULT immer verwendet wird, um den stärksten unterstützten Hashing-Algorithmus anzuwenden.

Die Kosten hängen von der Anzahl der ausgeführten Iterationen des Algorithmus ab und beeinflussen die Geschwindigkeit der Berechnung sowie den erzeugten Hash-Wert. Höhere Kosten brauchen länger, um Brute-Force-Angriffe zu bremsen

+0

Danke. Jetzt bin ich klar. :) – rexhin

+0

Ich stolperte über ['eine Ihrer Antworten'] (http://stackoverflow.com/a/3250892/) Mark, beim Googeln des Themas. Eigentlich war meine Frage "Wie erhalten Hacker Passwörter mysql PHP?" seit ich mich immer die selbe Frage gestellt habe wie meine Frage. Wenn eine Maschine ein Passwort findet, sollte dies nicht mit dem damit verbundenen Benutzernamen abgeglichen werden, und wie würden sie überhaupt von der Datenbank erhalten? ...auf die ich keine Antwort gefunden habe. –

+0

Es gibt viele Möglichkeiten, wie ein Hacker Zugang zu einer Liste von Benutzern und Passwörtern erhält, nicht zuletzt eine SQL-Injection-Schwachstelle, die es ihnen ermöglicht, eine Abfrage zu modifizieren, oder physischen Zugriff auf einen Datenbankserver. Deshalb muss der Passwort-Hash geschützt werden. –

3

Pro Dokumentation PASSWORD_DEFAULT gemeint. Beachten Sie, dass diese Konstante sich im Laufe der Zeit ändert, wenn neue und stärkere Algorithmen zu PHP hinzugefügt werden. Aus diesem Grund kann sich die Länge des Ergebnisses aus der Verwendung dieser Kennung im Laufe der Zeit ändern. Daher wird empfohlen, das Ergebnis in einer Datenbankspalte zu speichern, die mehr als 60 Zeichen umfassen kann (255 Zeichen wären eine gute Wahl).

1

Es gibt momentan keinen Unterschied zwischen PASSWORD_DEFAULT und PASSWORD_BCRYPT (http://www.php.net/manual/en/password.constants.php). Die Kosten hängen von der Anzahl der Runden ab, auf die der Hash angewendet wird. Es wird auch im obigen Link erklärt. Wenn Sie die Sicherheit Ihres Hash erhöhen möchten, erhöhen Sie besser die Anzahl der Runden statt der Länge. https://wwphp-fb.github.io/faq/security/passwords/

Derzeit wird es PASSWORD_DEFAULT ist PASSWORD_BCRYPT und als Sprache und Kryptographie Fortschritt unterstützt verschiedene Arten von Algorithmen:

1

Ein weiteres gutes Beispiel ist hier zu sehen. PASSWORD_DEFAULT wird durch diesen neuen Algorithmus ersetzt (zum Beispiel Argon2). Eine gute Wahl ist immer die PASSWORD_DEFAULT zu verwenden.