当用户注册我 清洁 与密码mysql_real_escape_string如下
mysql_real_escape_string
$password = clean($_POST['password']);
在将其添加到数据库之前,我使用:
$hashedpassword = sha1('abcdef'.$password);
并将其保存到mySQL中。
我的问题是我应该清理密码还是在将密码添加到数据库之前保护密码已被哈希处理?
嗯,有一个主要的误解。
mysql_real_escape_string() 不会 清除 任何内容。 它与安全性完全无关。
此函数仅用于转义分隔符,仅此而已。它可以帮助您将字符串数据放入SQL查询-仅此而已。
因此,要查询的每个字符串(将其用引号引起来),都必须使用此函数进行准备。在所有其他情况下,这将毫无用处甚至有害。
因此, 出于这种误解,您在这里犯了两个主要错误:
另外,请注意,此功能应始终与mysql_set_charset结合使用,否则"_real_"此功能的一部分将变得无用
"_real_"