Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich sichere alphanumerische Zeichenfolgen für Verifizierungslinks in PHP generieren?

Wie kann ich sichere alphanumerische Zeichenfolgen für Verifizierungslinks in PHP generieren?

Susan Sarandon
Susan SarandonOriginal
2024-12-23 00:54:15522Durchsuche

How Can I Generate Secure Alphanumeric Strings for Verification Links in PHP?

Eindeutige alphanumerische Zeichenfolgen für Verifizierungslinks generieren

Das Erstellen einer zufälligen, eindeutigen Zeichenfolge, die sowohl Buchstaben als auch Zahlen enthält, ist eine sichere Methode für Verifizierungslinks bei Kontoerstellungsprozessen. Hier sind zwei PHP-Funktionen, die für diesen Zweck verwendet werden können:

PHP 7 (empfohlen)

Die PHP 7-Standardbibliothek enthält die Funktion random_bytes(), die generiert kryptografisch sichere pseudozufällige Bytes.

$bytes = random_bytes(20);
echo bin2hex($bytes);

PHP 5 (Veraltet)

Für PHP 5 wird empfohlen, openssl_random_pseudo_bytes() zum Generieren sicherer Token zu verwenden:

echo bin2hex(openssl_random_pseudo_bytes(20));

Zusätzliche Überlegungen

Um die Sicherheit zu erhöhen und das Erraten von Token einzuschränken, empfiehlt es sich, eine benutzerdefinierte Funktion zu erstellen, die bestimmte Anforderungen erfüllt Anforderungen. Hier ist eine umfassende Implementierung, die diese Anforderungen erfüllt:

function crypto_rand_secure($min, $max) {
    // Calculate and filter random bits
    $bytes = (int) (($max - $min) / 8) + 1;
    $bits = (int) log($max - $min, 2) + 1;
    $filter = (int) (1 << $bits) - 1;

    do {
        $rnd = hexdec(bin2hex(openssl_random_pseudo_bytes($bytes)));
        $rnd &= $filter;
    } while ($rnd > $range);

    return $min + $rnd;
}

function getToken($length) {
    // Define character set and calculate maximum length
    $codeAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    $max = strlen($codeAlphabet); // edited

    // Generate token of specified length
    $token = "";
    for ($i = 0; $i < $length; $i++) {
        $token .= $codeAlphabet[crypto_rand_secure(0, $max-1)];
    }

    return $token;
}

Diese Funktion bietet eine sichere Alternative zu rand() und mt_rand und stellt sicher, dass generierte Token schwer zu erraten sind und die gewünschten Kriterien erfüllen.

Das obige ist der detaillierte Inhalt vonWie kann ich sichere alphanumerische Zeichenfolgen für Verifizierungslinks in PHP generieren?. 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