在对密码进行散列并存储之前,有一个关于在密码上使用stripslashes和mysql_real_escape_string的问题。并且散列之前的剥离或转义不是必需的,因为特殊字符对散列函数没有意义。
但是,某些哈希结果是否可能会产生危险的SQL查询?
我意识到,如果有足够的哈希和盐,故意发生这种情况的可能性很小,但是在散列结果上运行条带并逃脱仍然是一个好习惯吗?
答案 0 :(得分:3)
哈希函数的结果是一个数字。据我所知,大多数(如果不是全部)PHP哈希函数返回十六进制数。哈希函数不存在不安全字符串结果的危险。
但是,最好将所有内容放入查询中 - 或者甚至更好地使用参数化查询。
答案 1 :(得分:2)
这样做过于热心和不必要。散列函数不会输出任何可能引入SQL注入漏洞的引号。此外,您不应该同时使用stripslashes()
和mysql_real_escape_string()
。只需使用mysql_real_escape_string()
。
示例强> 并不是说我宽容使用MD5,而是来自其维基百科页面:
MD5哈希通常表示为32位十六进制数。
十六进制数不应该是SQL注入的问题,因为它们只包含/[0-9a-f]/
。如果您搜索您正在使用的散列函数,您应该找到类似的东西。您不需要清理哈希值。你应该安全!