Was ist der sicherste Weg, ein Passwort zu speichern, mit Code Igniter?
Ich bin mit Code Igniter für mein Aktuelles Projekt.
Als jetzt, ich bin mit MD5 für das Passwort-hashing, aber ich habe gelesen, eine Menge von Orten, dass es ist nicht eine gute Praxis, dies zu tun.
Was soll ich mit gehen?
- Mit einem Salz
- Oder sollte ich bcrypt
Auch, wenn bcrypt ist zu empfehlen, dann, wie es zu benutzen mit Code Igniter?
BEARBEITEN
Habe ich diese Dateien in application/libraries
- PasswordHash.php
- c/Makefile
- c/crypt_private.c
In mein controller, ich bin mit diesem code -
$params = array(
'phpass_hash_strength' => 8,
'phpass_hash_portable' => FALSE
);
$this->load->library('PasswordHash', $params);
$password = $this->passwordhash->HashPassword($pwd);
Bin ich immer diese Fehler -
A PHP Error was encountered
Severity: Notice
Message: Uninitialized string offset: 3
Filename: libraries/PasswordHash.php
Line Number: 116
A PHP Error was encountered
Severity: Warning
Message: strpos() [function.strpos]: Empty delimiter
Filename: libraries/PasswordHash.php
Line Number: 116
Update
Entfernt PasswordHash.php
mit SimpleLoginSecure jetzt.
InformationsquelleAutor Aniket | 2011-08-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bcrypt verwenden. Diese Diskussion kam hier in den Kommentaren zu meiner Antwort. Sie können benutzen Sie eine Bibliothek wie phppass wirklich vereinfachen das Passwort-Verschlüsselung.
Auf die Frage von Salz. Verwenden Sie es! Sonst jemand kann sich einfach gehen zu diese Website und laden Sie die rainbow-Tabellen, dass die Deckung der großen Mehrheit der Kennwörter der Durchschnittliche Benutzer wählt. Vor allem mit all den Sicherheits-Lecks in den letzten paar Monaten, jetzt ist nicht die Zeit zu sagen, die Sie nicht verwenden, etwas so einfaches zu implementieren, wie zufällige Salz.
UPDATE
Verwenden PHPPass mit CI, downloaden Sie und extrahieren Sie die Dateien aus dem phppass website, weiter oben verlinkt. Setzen Sie die PasswordHash.php Datei in Ihrem CI application/libraries Verzeichnis.
In Ihrem code, können Sie dann laden Sie die Bibliothek über:
$this->load->library('PasswordHash',array(8, FALSE));
Hashing der Passwörter ist dann so einfach wie
$this->PasswordHash->HashPassword($password);
Später überprüfen, ob ein Passwort korrekt ist, so einfach ist es:
Habe ich diesen demo von http://dev.myunv.com/articles/secure-passwords-with-phpass/, die Ihnen viel mehr Informationen. Habe ich geändert, das tutorial leicht zu nutzen, CI-loader, das ist der Grund, warum Sie brauchen nicht die
include
odernew
Aussagen.bcrypt ist Massiv sicherer. Wie gesagt, Lesen Sie die Kommentare auf meine andere Antwort, um herauszufinden, warum. Kurz gesagt, obwohl die Berechnung der rainbow-tables für bcrypt ist Massiv teurer als für auch SHA2 (Hinweis SHA1-Hash ist tot, gar nicht dorthin gehen, ich habe gesagt, dass früher).
bcrypt ist ziemlich nett, dass das Salz gebaut, in denen spart, die Sie benötigen, um erstellen und speichern.
was Tippfehler? ich bin mit dem gleichen Fehler
Missing argument 2 ...
auch die dev.myunv.com/articles/secure-passwords-with-phpass link ist tot, das ist also nicht mehr hilfreich
InformationsquelleAutor Endophage
warum
md5()
wenn es nur so einfach zu bedienen,sha1()
?Auch das Salzen der Passwörter ist immer eine gute Idee, da es effektiv die Gefahr einer Rainbow-Table Angriff
In meiner Erfahrung ein gesalzener SHA1-hash ist pleanty sicher für 99% der web-Anwendungs-Situationen.
es gibt keinen Grund, meiner Meinung nach md5 sha1-wenn so leicht in php.
alrite :), dann werde ich weitermachen mit SHA1 :D, danke 🙂
Und CI hat, Verschlüsselungs-Funktionen, die Nutzung eines Verschlüsselungs-Schlüssel, den Sie festlegen in der config, binden Sie es auf Ihre spezielle Anwendung. Also, nutzen Sie einfach
$this->ci->hash($password);
und es wird sha1-wenn es verfügbar ist auf Ihrem server. CI-docs: codeigniter.com/user_guide/libraries/encryption.htmlangesichts der Tatsache, wie einfach eine gute Sicherheit, ist die Umsetzung gibt es absolut keine Entschuldigung für riskieren einen Einbruch, weil, wie der Entwickler, Sie konnte nicht belästigt werden, egal, wie klein Ihre website ist.
InformationsquelleAutor jondavidjohn
Code Igniter hat sich geändert, seit der Zeit diese Frage gestellt wurde. Aber für den Vorteil von einigen, die nicht über die umfangreiche Dokumentation von CI oder noch nicht gesehen haben, bevor, CI hat einen Verschlüsselungs-Klasse, die eine zwei-Wege-Daten-Verschlüsselung mit Mcrypt-Bibliothek von PHP.
Nach der Initialisierung der Klasse mit:
Können Sie verschlüsseln Sie wie folgt vor:
- und entschlüsseln wie folgt:
CI hat auch eine nicht-decodable 1-way-hashing:
Weitere Informationen finden Sie unter:
http://www.codeigniter.com/user_guide/libraries/encryption.html
InformationsquelleAutor Ibrahim Dauda