哈希输出对SQL查询是否危险?

时间:2011-12-28 19:40:02

标签: php mysql sql security hash

在对密码进行散列并存储之前,有一个关于在密码上使用stripslashes和mysql_real_escape_string的问题。并且散列之前的剥离或转义不是必需的,因为特殊字符对散列函数没有意义。

但是,某些哈希结果是否可能会产生危险的SQL查询?

我意识到,如果有足够的哈希和盐,故意发生这种情况的可能性很小,但是在散列结果上运行条带并逃脱仍然是一个好习惯吗?

2 个答案:

答案 0 :(得分:3)

哈希函数的结果是一个数字。据我所知,大多数(如果不是全部)PHP哈希函数返回十六进制数。哈希函数不存在不安全字符串结果的危险。

但是,最好将所有内容放入查询中 - 或者甚至更好地使用参数化查询。

答案 1 :(得分:2)

这样做过于热心和不必要。散列函数不会输出任何可能引入SQL注入漏洞的引号。此外,您不应该同时使用stripslashes()mysql_real_escape_string()。只需使用mysql_real_escape_string()

示例 并不是说我宽容使用MD5,而是来自其维基百科页面:

  

MD5哈希通常表示为32位十六进制数。

十六进制数不应该是SQL注入的问题,因为它们只包含/[0-9a-f]/。如果您搜索您正在使用的散列函数,您应该找到类似的东西。您不需要清理哈希值。你应该安全!