Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich Passwörter mithilfe der Zwei-Wege-Verschlüsselung in PHP sicher speichern und abrufen?

Wie kann ich Passwörter mithilfe der Zwei-Wege-Verschlüsselung in PHP sicher speichern und abrufen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-19 12:08:39807Durchsuche

How Can I Securely Store and Retrieve Passwords Using Two-Way Encryption in PHP?

Zwei-Wege-Verschlüsselung: Abrufbare Passwörter speichern

Einführung

Passwörter sicher speichern und gleichzeitig zulassen Es ist eine Herausforderung, wenn Benutzer sie abrufen können. Symmetrische Verschlüsselung kann diesem Bedarf gerecht werden, aber das Verständnis der Nuancen der Implementierung ist von entscheidender Bedeutung.

Verschlüsselung und Entschlüsselung in PHP

Um Passwörter in PHP zu ver- und entschlüsseln, sollten Sie die Verwendung von in Betracht ziehen mcrypt- oder OpenSSL-Bibliotheken. Hier ist ein Beispiel für die Verwendung von mcrypt:

function encrypt($password, $key)
{
    $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_DEV_URANDOM);
    return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $password, MCRYPT_MODE_CBC, $iv);
}

function decrypt($encryptedPassword, $key)
{
    $iv = substr($encryptedPassword, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));
    $password = substr($encryptedPassword, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));
    return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $password, MCRYPT_MODE_CBC, $iv);
}

Sicherster Algorithmus

Der beste Verschlüsselungsalgorithmus hängt vom jeweiligen Anwendungsfall ab. Für die Speicherung von Passwörtern gilt AES-256 (Rijndael) im CBC- oder CTR-Modus im Allgemeinen als robust.

Speicherung privater Schlüssel

Die sichere Speicherung des privaten Schlüssels ist von entscheidender Bedeutung. Ein empfohlener Ansatz besteht darin, eine Kombination aus dem Passwort des Benutzers und einem serverseitigen Salt zu verwenden. In PHP kann dies erreicht werden durch:

$salt = mcrypt_create_iv(16, MCRYPT_DEV_URANDOM);
$key = hash('sha256', $userPassword . $salt);

Privater Schlüssel als Benutzereingabe

Wenn Benutzer vertrauenswürdig sind, bitten Sie sie, beim Abrufen den privaten Schlüssel anzugeben Passwörter können zusätzliche Sicherheit bieten. Dies schützt vor serverseitigen Sicherheitsverletzungen.

Sicherheitsrisiken

Verschlüsselte Passwörter können anfällig sein für:

  • Schlüssellecks
  • Brute-Force-Angriffe
  • Wiederholung Angriffe
  • Abfangen
  • Bekannte Klartextangriffe

Abwehrstrategien

Um diese Risiken zu mindern, implementieren Sie Folgendes:

  • Starke Verschlüsselungsalgorithmen
  • Sicher Schlüsselspeicherung
  • Passwort-Hashing
  • Timeouts bei Entschlüsselungsversuchen
  • Zwei-Faktor-Authentifizierung

Das obige ist der detaillierte Inhalt vonWie kann ich Passwörter mithilfe der Zwei-Wege-Verschlüsselung in PHP sicher speichern und abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn