Ene*_*oma 3 php mysql security
当用户注册我清理密码时mysql_real_escape_string,如下所示
$password = clean($_POST['password']);
Run Code Online (Sandbox Code Playgroud)
在将其添加到数据库之前,我使用:
$hashedpassword = sha1('abcdef'.$password);
Run Code Online (Sandbox Code Playgroud)
并将其保存到mySQL中.
我的问题是我应该清理它还是我保护密码被加密后再添加到数据库中?
You*_*nse 10
嗯,有一个主要的误解.
mysql_real_escape_string()不会 清除 任何东西.它根本与安全无关.
此函数仅用于转义分隔符,仅此而已.它可以帮助您将字符串数据放入SQL查询 - 这就是全部.
因此,您将要查询的每个字符串(通过将其放在引号中),您必须使用此函数进行准备.在所有其他情况下,它将是无用的甚至是有害的.
因此,
出于这种误解,你在这里犯了两个重大错误:
另外,作为附注,请记住,此函数应始终与mysql_set_charset一起使用,否则"_real_"此函数的一部分将变得无用