PHP:特殊字符密码
我似乎无法想出在PHP中使用密码的正确方法。我散列和使用盐,当涉及到存储,但我想获得基本的口令下PHP:特殊字符密码
stripslashes(mysql_real_escape_string($_POST["password"]));
我假设一些用户会使用带“!@#$%^密码。 ..“等 我可以想象用户使用密码,如<b>lulz</b>"u'mad?
。
如何在密码变量中包含这些特殊字符?
你不应该在这里做任何类型的转义或剥离。 *就像$hashed = my_favourite_hash($_POST["password"] . $salt)
应该没问题。 †任何理智的哈希函数都应该返回一串字母数字字符,而这些字符都不需要转义。
无论如何,你应该用准备好的发言您的SQL查询,所以没有机会SQL注入等
*假设你没有启用magic quotes(你真的不该”牛逼!)。
†在此替换您的首选散列函数my_favourite_hash
。
我猜这个子文本是为了避开“{hash_algo}不安全!!”键入注释。良好的调用:) – 2011-12-28 19:34:27
stripslashes()和mysql_real_escape_string()的要点是确保你没有传递任何东西给你的查询,而这些查询可能会被误认为数据以外的东西。哈希应该将您发送的任何内容转换为严格的字符串数据。 – Chris 2011-12-28 19:34:53
@Madmartigan:是的,我未来的答案是... – 2011-12-28 19:35:09
我不会在任何不会被重新输出为HTML的数据上使用反斜杠。 – 2011-12-28 19:32:09
你不应该担心这一点。你应该只用盐和散列原始值。 – 2011-12-28 19:32:14
在对它进行散列之前,您不需要对输入执行任何操作。 – 2011-12-28 19:32:39