為驗證連結產生唯一的字母數字字串
建立包含字母和數字的隨機唯一字串是驗證連結的安全方法在帳戶建立過程中。以下是兩個可用於此目的的PHP 函數:
PHP 7(建議)
PHP 7 標準庫包含random_bytes() 函數,它產生加密安全的偽隨機位元組。
$bytes = random_bytes(20); echo bin2hex($bytes);
PHP 5 (已過時)
對於 PHP 5,建議使用 openssl_random_pseudo_bytes()產生安全令牌:
echo bin2hex(openssl_random_pseudo_bytes(20));
其他注意事項
為了增強安全性並限制令牌猜測,建議建立符合特定要求的自訂函數。這是滿足這些要求的全面實現:
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; }
此函數提供了 rand() 和 mt_rand 的安全替代方案,確保產生的令牌難以猜測並滿足所需的標準。
以上是如何在 PHP 中產生用於驗證連結的安全字母數字字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!