PHP:具有特殊字符的密码

时间:2011-12-28 19:30:07

标签: php mysql sql passwords

我似乎无法想出在PHP中使用密码的正确方法。我在存储时使用盐进行哈希处理,但是我试图将基本密码保存下来

stripslashes(mysql_real_escape_string($_POST["password"]));

我假设有些用户会使用密码“!@#$%^ ...”等。 我可以想象用户使用<b>lulz</b>"u'mad?等密码。

如何在密码变量中包含这些特殊字符?

2 个答案:

答案 0 :(得分:5)

你不需要在这里进行任何类型的转义或剥离。 * $hashed = my_favourite_hash($_POST["password"] . $salt)这样的东西应该没问题。任何理智的散列函数应该返回一串字母数字字符,其中没有一个字符需要转义。

无论如何,你应该为你的SQL查询使用预准备语句,所以没有SQL注入的机会等。

<小时/> *假设你没有启用magic quotes(你真的不应该!)。

†在此替换my_favourite_hash的首选哈希函数。

答案 1 :(得分:3)

以纯文本格式存储密码非常有害。相反,您应该在数据库中存储该密码的哈希值。如果密码经过哈希处理,则可能包含的字符没有限制。

要创建所述哈希,我建议你使用crypt()函数。最好使用SHA512或BLOWFISH算法。

此外,我建议您停止使用古老的mysql_*函数(正在弃用的过程中)并学习如何利用PDOMySQLi准备好的语句