Aktueller Standort: Startseite> Neueste Artikel> Wie erstelle ich eine sichere Benutzerregistrierung und ein Anmeldesystem mit der Funktion von PHP von PHP?

Wie erstelle ich eine sichere Benutzerregistrierung und ein Anmeldesystem mit der Funktion von PHP von PHP?

M66 2025-06-23

Die Sicherheit von Benutzerauthentifizierungssystemen ist eine wichtige Überlegung beim Erstellen von Websites oder Anwendungen. PHP bietet eine Vielzahl von Möglichkeiten zur Implementierung der Kennwortverschlüsselung und -überprüfung, unter der die Crypt () -Funktion ein klassisches und leistungsstarkes Verschlüsselungsinstrument ist. In diesem Artikel wird erläutert, wie die Funktion CryPT () verwendet wird, um ein sicheres Benutzerregistrierung und ein Anmeldesystem zu erstellen, einschließlich Kennwortverschlüsselung, Überprüfung und Benutzerdatenverarbeitung.

1. Einführung in die KryPT () -Funktion

Crypt () ist eine von PHP bereitgestellte Verschlüsselungsfunktion, die einen Einweg-Hash-Algorithmus verwendet, um Zeichenfolgen zu verschlüsseln. Es unterstützt eine Vielzahl von Verschlüsselungsalgorithmen (wie MD5, SHA-256, SHA-512 und Blowfish), abhängig vom bereitgestellten Salzformat.

 string crypt ( string $str , string $salt )

Der Wert von Salz bestimmt die Art und das Verhalten des Verschlüsselungsalgorithmus. Für die Sicherheit wird empfohlen, ein Salz zu verwenden, das SHA-512 oder Blowfish unterstützt.

2. Benutzerregistrierungsprozess

Bei der Registrierung eines Benutzers müssen wir das Kennwort verschlüsseln, bevor wir es in der Datenbank hinterlegen, um sicherzustellen, dass der Angreifer das Passwort nicht leicht wiederherstellen kann, selbst wenn die Datenbank durchgesickert ist.

Beispielcode: Benutzerregistrierung

 <?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $username = $_POST['username'];
    $password = $_POST['password'];

    // Erstellen Sie ein starkes Salz und verschlüsseln Sie das Passwort(verwendenSHA-512)
    $salt = '$6$' . bin2hex(random_bytes(16)) . '$';  // SHA-512
    $hashed_password = crypt($password, $salt);

    // Speichern Sie Benutzername und verschlüsselte Passwort in der Datenbank(vonSQLiteAls Beispiel)
    $db = new PDO('sqlite:users.db');
    $stmt = $db->prepare("INSERT INTO users (username, password) VALUES (?, ?)");
    $stmt->execute([$username, $hashed_password]);

    echo "Erfolgreich registriert,Bitte <a href='https://m66.net/login.php'>Einloggen</a>。";
}
?>

HTML -Registrierungsformular:

 <form method="POST" action="">
    Benutzername:<input type="text" name="username" required><br>
    Passwort:<input type="password" name="password" required><br>
    <input type="submit" value="registrieren">
</form>

3.. Benutzeranmeldungsprozess

Beim Anmelden müssen wir das ursprüngliche Passwort nicht kennen. Verschlüsseln Sie einfach das vom Benutzer eingegebene Passwort mit demselben Salz in der Datenbank und vergleichen Sie es mit dem gespeicherten Hash.

Beispielcode: Benutzeranmeldung

 <?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $username = $_POST['username'];
    $password_input = $_POST['password'];

    $db = new PDO('sqlite:users.db');
    $stmt = $db->prepare("SELECT password FROM users WHERE username = ?");
    $stmt->execute([$username]);
    $row = $stmt->fetch(PDO::FETCH_ASSOC);

    if ($row) {
        $hashed_password = $row['password'];
        if (crypt($password_input, $hashed_password) === $hashed_password) {
            echo "Einloggen成功!Willkommen zurück,{$username}。";
        } else {
            echo "Passwort错误。";
        }
    } else {
        echo "Der Benutzer existiert nicht。";
    }
}
?>

HTML -Anmeldeformular:

 <form method="POST" action="">
    Benutzername:<input type="text" name="username" required><br>
    Passwort:<input type="password" name="password" required><br>
    <input type="submit" value="Einloggen">
</form>

4. Datenbankstruktur Beispiel (SQLite)

 CREATE TABLE users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    username TEXT UNIQUE NOT NULL,
    password TEXT NOT NULL
);

5. Sicherheitsberatung

  • Verwenden von HTTPS : Stellen Sie sicher, dass alle Formulartransfers über eine verschlüsselte Verbindung durchgeführt werden.

  • Fügen Sie CSRF-Schutz hinzu : Verhindern Sie die Anfragen von Anfragen von CSRF.

  • Begrenzen Sie die Anzahl der Anmeldeversuche : Verhindern Sie Brute Force Cracking.

  • PHP -Version rechtzeitig aktualisieren : Verschlüsselungsalgorithmen und Funktionen sicher halten.

  • Wenn Sie modernere Funktionen (z. B. password_hash) verwenden, können Sie sich auf die Logik dieses Artikels beziehen : Obwohl Crypt () gültig ist, empfiehlt moderne PHP die Verwendung von password_hash () und passwart_verify () .

Abschluss

Indem wir die Crypt () -Funktion und die begleitende Kennwortüberprüfungslogik rational verwenden, können wir ein relativ sicheres Benutzerauthentifizierungssystem erstellen. Während moderner PHP fortgeschrittenere Schnittstellen wie password_hash () bietet, kann das Verständnis der Tiefe der Kennwortverschlüsselung immer noch dazu beitragen, wie Crypt () funktioniert. Crypt () ist immer noch eine praktische Wahl in einigen niedrigeren Versionen von PHP -Umgebungen oder besonderen Kompatibilitätsanforderungen.