Verschlüsseln Passwort vor der Speicherung in der Datenbank?
Habe ich ein Passwort übergeben von meinem iPhone app auf die Datenbank über ein php-script, user.php.
Die variable $pass ist bevölkert von den folgenden:
$pass = str_replace("'", "", $_REQUEST['pass']);
Wie kann ich verschlüsseln, bevor es eingefügt in meine Datenbank? Ich habe gelesen, ein wenig über die verschiedenen Techniken, sondern auf der Suche nach der beste Weg, dies zu verwalten.
Vielen Dank an alle.
unrelated: verwenden Sie korrekte Eingabe der Flucht und verlassen Sie sich nicht auf
es kommt eine iPhone-app, übergeben durch die URL zu dem Skript.
Siehe auch Openwall Portable PHP password hashing framework (PHPass). Seine gehärtete gegen eine Reihe von gemeinsamen Angriffe auf Benutzer-Passwörter.
str_replace
heraus zu filtern, alle Apostrophees kommt eine iPhone-app, übergeben durch die URL zu dem Skript.
Siehe auch Openwall Portable PHP password hashing framework (PHPass). Seine gehärtete gegen eine Reihe von gemeinsamen Angriffe auf Benutzer-Passwörter.
InformationsquelleAutor BigMike | 2010-10-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Während die Antwort unten ist technisch korrekt, php hat neue Empfehlungen in Bezug auf die Hash-algorithmen zu verwenden. Ihre Empfehlung, php >= 5.5.0, ist die Verwendung der
password_hash
undpassword_verify
Funktionen hash und überprüfen Sie, Hash-Passwörter . Als zusätzlichen Vorteil, diese Funktionen automatisch eine individualisierte Salz als Teil der zurückgegebenen hash, so brauchen Sie nicht zu befürchten, dass explizit.Wenn Sie kümmern sich nicht um das abrufen der Passwort - Wert (aus der Datenbank verschlüsselten Wert), können Sie ein one-way-hash-Algorithmus (z.B. sha1). Diese Funktion gibt eine bestimmte Zeichenfolge (hash), die nicht verwendet werden, um die ursprüngliche finden string (theoretisch). Es ist möglich, dass zwei unterschiedliche strings erstellen könnten den gleichen hash (eine so genannte Kollision), aber dies sollte nicht sein ein problem mit Passwörtern.
Beispiel:
$pass = sha1($_REQUEST['pass']);
Eins, um es ein wenig sicherer ist das hinzufügen von Salz, um den hash und führen Sie die hash-Funktion erneut. Dies macht es schwieriger, um ein Passwort zu generieren hash in böser Absicht, da der salt-Wert ist, verarbeitet der server-Seite.
Beispiel:
$pass = sha1(sha1($_REQUEST['pass']).sha1("mySalt@$#(%"));
Ich habe diese ein. Es funktioniert und muss nicht super kryptisch.
InformationsquelleAutor Richard Marskell - Drackir
Verwendung der php - Krypta Bibliothek. Md5 ist keine Verschlüsselung, es ist hashing.
Ebenfalls, Salz Ihre Passwörter. Warum?
InformationsquelleAutor Chris
Ersten, erstellen Sie eine zufällige Benutzer-Salz. Dann sollten Sie speichern, und den Passwort-hash in der Datenbank.
und speichern Sie die $salt und $pass in die Datenbank. Dann, wenn Sie melden Sie sich Sie sich Ihre Zeile und überprüfen Sie die hash:
Einen Benutzer anlegen Salz für jedes Konto versichert rainbow-tables nutzlos sind, und jeder, der gebrochen in deinen server hätte, um brute-force jedes Passwort.
InformationsquelleAutor Xeoncross
Verwenden Krypta mit etwas Salz. Wie
als auf http://www.ibm.com/developerworks/opensource/library/os-php-encrypt/
InformationsquelleAutor brian_d
Meisten basic: Hash mit MD5-oder SHA1 -
oder
Neulich habe ich angefangen das speichern der Benutzernamen-Hash, also login-versuche sind sicher mit nur gehashte Daten für Vergleiche.
Können Sie das "Salz" der hashes mit extra-Daten, so dass, wenn Sie kompromittiert werden, ist es Wert nicht gefunden werden kann (versuchen Sie googeln einige einfache Hash-Worte).. d.h. verwenden Sie eine Website-weite saite zu verändern, die standard-hash wie
md5("mySiteSalt!!" . $_REQUEST['pass']);
oder etwas mehr erweitert.Für das Protokoll, das hashing ist eine form der Verschlüsselung (wenn auch one-way). Unabhängig davon, MD5 sollte NIEMALS verwendet werden, zum speichern von Passwörtern. Mit der heutigen rainbow-Tabellen, es ist so gut wie Klartext.
Nie gesagt hashing ist das nicht eine form der Verschlüsselung, ich habe gerade gesagt, md5 ist keine Verschlüsselung. Warum also meinst du mit md5 zu "verschlüsseln" die OP-Passwörter. Zumindest erklären Sie in Ihrer Antwort diese vor dem erstellen anderer Benutzer mit gewundenen Gefühl der Sicherheit durch die Verwendung von md5 für das Passwort-Verschlüsselung.
Sie wollen nicht zum verschlüsseln von Passwörtern, die Sie wollen, um hash. Ich war die Bearbeitung zum hinzufügen von Salzen, wodurch die rainbow-table-Sicherheitsanfälligkeit... obwohl ich immer noch behaupte, dass, wenn jemand ruft in Ihrer Datenbank, um die hashes, keine Verschlüsselung eingestellt ist, gehen Sie zu retten. Ich würde nicht "verschlüsseln" Passwörter, weil ich nicht wollen, dass Sie und ich nicht wollen, gibt es eine Möglichkeit diese rückgängig machen.
Pro Kennwort/Benutzer-Salz ist eine bessere Idee.
InformationsquelleAutor Fosco
Sollten Sie verwenden, SHA1-hash-Kennwörter für die Speicherung in der Datenbank. Es ist die einfachste, aber dennoch effektivste Weg, um die Speicherung der Passwörter:
Es ist auch besonders sicher. Obwohl die Integrität der es beginnt zu kriechen, ist es ziemlich leicht, um diese zu aktualisieren-Funktion SHA-256 (die ist unglaublich sicher).
Es ist sicherlich zu schnell, aber es nutzt 30% mehr Platz als MD5, so zumindest die Tische sind größer. Plus, wenn jemand genug hat Zugriff auf Ihre Datenbank zu sammeln, die Hash-Passwörter, die Chancen sind Sie stehlen können eine Menge anderer unverschlüsselt info. SHA1 ist nicht "toll", aber es werde tun, die in 95% der Szenarien.
InformationsquelleAutor mattbasta
Finden Sie heraus, warum die md5 -, sha1-und Sie schnell Freunde vielleicht nicht eine gute Idee, Sie sollten Lesen Sie den Beitrag Genug Mit Den Rainbow-Tabellen: Was Sie Wissen Müssen Über Sichere Passwort-Systeme von Thomas Ptacek. Der Kern:
Hinweis: es ist PHK, nicht php.
InformationsquelleAutor middus