Aktueller Standort: Startseite> Neueste Artikel> Integrieren Sie Crypt () als Verschlüsselungsschema in CMS

Integrieren Sie Crypt () als Verschlüsselungsschema in CMS

M66 2025-05-28

In Content Management Systems (CMS) ist die Sicherheit von Benutzerdaten von entscheidender Bedeutung, insbesondere die Speicherung von Kennwörtern. Die mit PHP gelieferte Crypt () -Funktion ist eine klassische und sichere Verschlüsselungsmethode für Kennwort. Die Nutzungseinstellung kann die Sicherheit des Systems erheblich verbessern. In diesem Artikel wird eingehend erläutert, wie die Crypt () -Funktion in das CMS -System effektiv integriert werden kann, um die Sicherheit und Flexibilität des Kennwortspeichers zu gewährleisten.

1. Verstehen Sie die Crypt () -Funktion

Crypt () ist eine integrierte Verschlüsselungsfunktion in PHP und wird auf der Grundlage einer Vielzahl von Verschlüsselungsalgorithmen (wie DES, Blowfish, SHA-256, SHA-512 usw.) implementiert. Es erzeugt eine irreversible verschlüsselte Zeichenfolge, indem ein "Salzwert" -Parameter übergeben, der für den Kennwort -Hash -Speicher geeignet ist.

 $hashed_password = crypt($password, $salt);

Der Salzwert ist der Schlüssel zur Gewährleistung der Verschlüsselungssicherheit und zur Vorbeugung von Regenbogentischangriffen.

2. Wählen Sie den richtigen Verschlüsselungsalgorithmus

crypt () unterstützt verschiedene Algorithmen in der Form wie folgt:

  • DES (nicht empfohlen, niedrige Sicherheit)

  • Blowfish (Identifier $ 2y $ , empfohlen für modernes Passwort Hashing)

  • SHA-256 (Kennung $ 5 $ )

  • SHA-512 (Kennung $ 6 $ )

Verwenden Sie zum Beispiel Blowfish:

 $salt = '$2y$12$' . substr(bin2hex(random_bytes(16)), 0, 22);
$hash = crypt($password, $salt);

Hier repräsentiert $ 2y $ den Algorithmus, 12 ist der Kostenparameter (Anzahl der Iterationen, je größer der Wert, desto sicherer ist es nur zeitaufwändig), gefolgt von 22 Zeichen Salz.

3. Integrationsbeispiel: Benutzerregistrierung und Anmeldungsprozess

Verschlüsseltes Passwort bei der Registrierung

 function createPasswordHash($password) {
    // Zufällige Salze erzeugen,verwenden Blowfish Algorithmus
    $salt = '$2y$12$' . substr(strtr(base64_encode(random_bytes(16)), '+', '.'), 0, 22);
    // Hash erzeugen
    return crypt($password, $salt);
}

Wenn sich der Benutzer registriert, wird das Klartextkennwort über die oben genannten Funktionen generiert und in der Datenbank gespeichert.

Überprüfen Sie das Passwort, wenn Sie sich anmelden

 function verifyPassword($password, $hashedPassword) {
    // verwenden stored hash Vergleich des Salzes in der Kryptografie
    return crypt($password, $hashedPassword) === $hashedPassword;
}

Nehmen Sie beim Anmeldung das in der Datenbank gespeicherte Hash -Kennwort heraus, verschlüsseln Sie sein Salz erneut und vergleichen Sie, ob es übereinstimmt.

4. Entwurfsdatenbankfelder

Es wird empfohlen, Kennwortfelder mit einem String -Typ zu sein, wobei eine Länge von mindestens 60 Zeichen für den von Blowfish erzeugten Hash aufgenommen wird:

 CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) UNIQUE NOT NULL,
    password_hash CHAR(60) NOT NULL,
    ...
);

5. Vorsichtsmaßnahmen und Sicherheitsvorschläge

  • Passen Sie kein Salz an : Verwenden Sie das von Crypt () generierte Salzformat oder verwenden Sie die Funktion password_hash () (PHP 5.5+), um die Vorgänge zu vereinfachen.

  • Kennwortaktualisierung : Betrachten Sie Benutzer, die schwächere Algorithmen für alte Passwörter verwenden, und regenerieren Sie stärker verschlüsselte Hashes, wenn Sie sich anmelden.

  • Kennwortstärke : Kombinieren Sie die Komplexität des Front-End- und Back-End-Zwangskennworts, um schwache Passwörter zu vermeiden.

  • Klartextspeicher vermeiden : Speichern Sie niemals Klartextkennwörter oder reversible verschlüsselte Passwörter.

6. Kombinieren Sie modernes PHP -Passwort -Hashing -API

Ausgehend von PHP 5.5 liefern password_hash () und passwart_verify () einfachere und sicherere Kennwortverwaltungsschnittstellen, und die zugrunde liegende Ebene basiert auch auf Crypt () . Es wird empfohlen, zuerst neue Projekte zu verwenden:

 $hash = password_hash($password, PASSWORD_BCRYPT);
$isValid = password_verify($password, $hash);

Wenn Ihre CMS -Version älter ist und Sie Crypt () manuell verwenden müssen, ist die obige Methode immer noch eine sichere Lösung.