好的,所以我正在尝试使用 PHP 5.4 脚本和 MySQL 创建一些受密码保护的网页。运行样本产生了一些意想不到的结果!
我使用以下方法创建了密码:
$salt = "";
$salt.=substr("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",mt_rand(0,63), 1);
$salt .= substr("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", mt_rand(0, 63), 1);
$pw1 = crypt($pw,$salt);
并将 $pw1 存储在 MySQL 数据库中。
然后在我的身份验证页面中,我检索了数据库密码并使用表单中的用户输入来验证用户,检查如下:
get $db_pw from database then...
if (crypt($user_password,$db_pw) == $db_pw) ... proceed
一切正常,但如果我输入的字符串比密码长,它仍然可以通过。例如:如果我的密码是“stack”,如果我输入“stackoverflow”,它就会通过。如果我输入“stac”,它将按预期停止。
我试过搜索这个,但找不到类似的东西。我究竟做错了什么?