2010-12-15 1 views
0

Ich bin auf der Suche nach einer Möglichkeit, verschlüsselte Passwörter in eine Datenbank (MySQL) einzufügen, die ich später entschlüsseln kann. Ich habe Nachforschungen angestellt und bin zu dem Schluss gekommen, dass bcrypt die sicherere Methode ist, Passwörter zu speichern, aber dann kann ich sie nicht zurückbekommen, und es ist wichtig, dass ich ihre Passwörter kenne, falls ich mich einloggen muss ihr System (ich möchte mich nicht auf die IP-Authentifizierung verlassen).Verschlüsselung in nativem PHP und PERL

http://php.net/manual/es/function.mcrypt-cbc.php hat einige gute Beispiele für die Verwendung einer Bibliothek für die Verschlüsselung auf PHP und PERL, aber PERL benötigt eine zusätzliche Bibliothek und PHP muss eine bestimmte Version sein.

Ich bin auf der Suche nach einer Lösung, die native PERL und PHP (keine zusätzlichen Bibliotheken) mit Versionen laufen kann, die mindestens ein Jahr alt sind. Keine PHP 5.3 Funktionen oder ähnliches.

Das System hat nur 100 oder so Benutzer, so gibt es kein großes Risiko von jemand sogar Zugriff auf die Datenbank, aber nur wenn ich möchte eine Art von Schutz. Wenn es sein muss, wäre ich in Ordnung mit einer Bibliothek zu PERL hinzufügen, aber ich kann nicht wirklich wählerisch mit einer PHP-Bibliothek oder erfordern PHP-Version höher als 5.0

+0

Ist es nicht eine Option, um nur einen Hash des Passworts zu erstellen? –

+0

Der einzige echte Hash, den ich kenne, ist MD5, von dem ich weiß, dass er etwas unsicher ist. Ich möchte etwas haben, das eine Chance haben kann, innerhalb von 5 Minuten nicht geknackt zu werden – ParoX

Antwort

1

Verwenden Sie eine Standard-Hashing-Funktion (z. B. eine der sha Versionen) bedeutet, dass Sie das Passwort nicht zurückbekommen, aber es nicht bedeutet, dass Sie nicht in ihr System einloggen können.

Aktualisieren Sie einfach den Kennwort-Hash in der Datenbank mit einem bekannten (z. B. update user set password = sha1('password') usw.), melden Sie sich an und aktualisieren Sie das Kennwort dann wieder auf den alten Hashwert. Du bist dabei und ihr Passwort ist wieder so wie es war.

Wenn Sie verschlüsseln und entschlüsseln, müssen die Schlüssel auf dem Server sein; Wenn Sie kompromittiert sind, hat der Angreifer auch Zugriff auf die Schlüssel. Sie können die Kennwörter also unverschlüsselt belassen, wenn Sie sie nicht hashen.

0

Nur Hash-Passwörter mit SHA256 oder SHA512. Es sollte genug sein. Nun haben Sie gesagt, dass Sie ihre Passwörter wissen möchten, damit Sie sich in ihr Konto einloggen können. Sie als Administrator sollten die Möglichkeit haben, sich als Benutzer ohne mit ihren Kennwörtern anzumelden.

Wenn Sie als Benutzer anmelden müssen, dann rate ich Sie müssen etwas ändern? Nun, ein Administrator sollte in der Lage sein, Benutzerdaten zu ändern, ohne dass sie eingeloggt sein müssen ...

Also kann ich nur sagen, reparieren Sie Ihr System.

+0

Zum größten Teil stimme ich zu. Meine Benutzer sind jedoch bereits daran gewöhnt, das Passwort zu sehen und es auch per E-Mail wiederherzustellen. Ich weiß, dass ich ein System mit Token verwenden kann und ihnen erlauben kann, ein neues zu erstellen, aber das Abrufen des Kennworts hat mehrere Vorteile. – ParoX

+0

Denken Sie daran, dass es keine sichere Möglichkeit gibt, das zu tun, was Sie fragen. Wenn das Passwort abgerufen werden kann, kann es auch von einem Angreifer abgerufen werden. –