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
614 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!

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