如何在PHP中生成安全字符串?

时间:2011-07-31 13:45:05

标签: php

我正在为我的网站构建一个登录系统,但是我之前总是使用$ _SESSION变量来记住登录的人,但这次他们需要通过cookie记住。 cookie将存储他们的用户名和安全码,我也将其存储在数据库中,以便我确认他们是正确的用户。我已经看到了各种方法,但我希望生成一个完全安全的字符串。

4 个答案:

答案 0 :(得分:4)

$_SESSION默认情况下已使用Cookie,因此您无需更改任何内容。只需确保use_cookiesuse_only_cookies配置选项设置为开启。

答案 1 :(得分:0)

秘密通常是一个随机数,您可以计算其md5并将其放入cookie中,这就是我为我的一个应用程序执行的操作($ salt是一个独特的大型任意字符串):

$rnd = mt_rand( 0, 0x7fffffff ) ^ crc32( $salt ) ^ crc32( microtime() );

$secret = md5( $rnd );

如果你希望每次你将$ rnd保存到某个地方(也许在DB中)时更加安全,并将你的下一个$ rnd移动到它的值并保存在DB中的下一个$ rnd ......

答案 2 :(得分:0)

我将ASCII code与函数chr一起使用,从字符33到126。

功能如下:

$seed = "";
for ($i = 1; $i <= 20; $i++) {
    $seed .= chr( mt_rand(33,126) );
}
return md5($seed);

答案 3 :(得分:0)

您可以根据建议here制作一个加密安全的随机字符串

在这里,您将生成一个32个字符的长字符串,包含(A-Z)和(0-9)

$token = bin2hex(openssl_random_pseudo_bytes(16));

# or in php7
$token = bin2hex(random_bytes(16));