我应该在注册表单中输入mysql_real_escape_string密码吗?

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_"此函数的一部分将变得无用

  • +1我同意逃避不应该是"清理"数据. (3认同)