2014-02-12 6 views
6

Ich bin fast fertig mit einem Projekt mit codeigniter und ion_auth für die Authentifizierung. Ich kann dieses kleine Problem nicht herausfinden:Passwort-Validierung mit Ionen-Authentifizierung in CodeIgniter

Wenn der Benutzer das Passwort ändern möchte, habe ich die Felder OLD_PASSWORD und NEW_PASSWORD. OLD_PASSWORD muss dem Kennwort der Datenbank (DB_PASSWORD) entsprechen. Aber ich kann nicht herausfinden, wie das Passwort verschlüsselt wurde, um in der Datenbank gespeichert zu werden. OLD_PASSWORD stimmt offensichtlich niemals mit DB_PASSWORD überein.

Ich habe keine Standardverschlüsselung für ION_AUTH Bibliothek geändert. Ich habe versucht, sha1() -Funktion und es stimmte nicht mit der Verschlüsselung. Gleiches gilt für md5(), was nicht mehr für die Verschlüsselung von Passwörtern empfohlen wird.

Kann mir jemand für mich ein Licht anzünden?

+1

Als Hinweis, sollten Sie nie sein in der Lage sein, das Passwort des Benutzers aus der Datenbank zu lesen - wenn Sie können, ist Ihr System nicht sicher. – Krease

+0

Ok. Wie gehen Sie also vor, um das Passwort zu überprüfen? Wie halten Sie es gesichert? Ich habe ein paar Artikel über Sicherheit gelesen, aber es gibt so viele Kontroversen zwischen Autoren, dass es schwierig wird, zu wissen, wie man Ihre Website sicher hält. –

+0

[This] (http://www.troyhunt.com/2012/05/everything-you-ever-wanted-to-know.html) und das [Kennwortverwaltungs-Tag auf der Information Security Stackexchange-Site] (http: // security.stackexchange.com/questions/tagged/password-management) werden empfohlen, wenn Sie etwas darüber erfahren. Es ist ein bisschen eine Tangente von Ihrer ursprünglichen Frage, aber nützlich zu wissen, ob Sie in diesem Bereich arbeiten. – Krease

Antwort

12

Ion Auth Creator hier.

Die Standardverschlüsselung verwendet leider SHA1 für Abwärtskompatibilität.

Es gibt eine Option in der Konfig, stattdessen BCrypt zu verwenden, welches stark empfohlen wird.

Das Passwort ist zusammen mit einem Salz Hash aber so einfach laufen SHA1 gegen das Passwort wird Ihnen nicht die gleichen Ergebnisse. Werfen Sie einen Blick auf die hash_password() -Methode, um zu sehen, wie es hier getan: https://github.com/benedmunds/CodeIgniter-Ion-Auth/blob/2/models/ion_auth_model.php#L267

Wenn Sie alle Standardeinstellungen verwenden Sie tun können, diese vergleichen:

$user = $this->ion_auth->user(); 

$old_password = $this->input->post('old_password'); 

$password_matches = $this->ion_auth->hash_password_db($user->id, $old_password); 
+2

Hallo Ben, danke, dass du das für mich und für dieses tolle Authentifizierungssystem erledigt hast! –

+0

Yeah Ben, warum fügst du diesen Punkt nicht zu deiner Dokumentation hinzu? Ich finde es schwierig, das alte Passwort zu vergleichen. Jetzt funktioniert es gut, danke. – Daroath

+0

Hallo Ben, ich habe die Antwort hier versucht, aber ich kann es nicht zur Arbeit bringen. – claudios