Maison > développement back-end > tutoriel php > Comment puis-je générer des chaînes alphanumériques sécurisées pour les liens de vérification en PHP ?

Comment puis-je générer des chaînes alphanumériques sécurisées pour les liens de vérification en PHP ?

Susan Sarandon
Libérer: 2024-12-23 00:54:15
original
517 Les gens l'ont consulté

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

Générer des chaînes alphanumériques uniques pour les liens de vérification

La création d'une chaîne aléatoire et unique contenant à la fois des lettres et des chiffres est une méthode sécurisée pour les liens de vérification dans les processus de création de compte. Voici deux fonctions PHP qui peuvent être utilisées à cet effet :

PHP 7 (Recommandé)

La bibliothèque standard PHP 7 inclut la fonction random_bytes(), qui génère octets pseudo-aléatoires cryptographiquement sécurisés.

$bytes = random_bytes(20);
echo bin2hex($bytes);
Copier après la connexion

PHP 5 (Obsolète)

Pour PHP 5, il est recommandé d'utiliser openssl_random_pseudo_bytes() pour générer des jetons sécurisés :

echo bin2hex(openssl_random_pseudo_bytes(20));
Copier après la connexion

Considérations supplémentaires

Pour améliorer la sécurité et limiter les devinettes de jetons, il est conseillé de créer une fonction personnalisée répondant à des exigences spécifiques. Voici une implémentation complète qui répond à ces exigences :

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;
}
Copier après la connexion

Cette fonction fournit une alternative sécurisée à rand() et mt_rand, garantissant que les jetons générés sont difficiles à deviner et satisfont aux critères souhaités.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal