PHP过滤器输入转义输出

时间:2010-06-20 18:00:17

标签: php

如果我添加到mysql_real_escape_string也会更好更好吗:

$username = mysql_real_escape_string(trim(addslashes($_POST['username'])));

密码var中是否有任何需要

$password = md5(mysql_real_escape_string(trim($_POST['password'])));

我还阅读了一些关于从db安全检索数据的主题... 它说,检索这样的数据会更好:

htmlentities(stripslashes($v))

安全真的有必要吗?

4 个答案:

答案 0 :(得分:2)

摆脱了addslashes,这就是mysql_real_escape_string()的用途!

如果要进行哈希处理,无需真正转义密码。虽然不使用MD5,但是等等,我没有开放那种蠕虫。

答案 1 :(得分:2)

  • 不,不要使用addslashes。它不会使字符串更安全或更好,但会增加复杂性。
  • 转义要存储在数据库中的字符串。所以不要使用md5(mysql_real_escape_string($ password)),而是使用mysql_real_escape_string(md5($ password))。
  • 考虑在密码的开头和结尾留出空格,这样就不会修剪它们。
  • 出于证明的目的,在存储密码时使用 salt

答案 2 :(得分:1)

如果您使用addslashes

,则无需使用mysql_real_escape_string

此外,如果在输入数据库之前对输入进行了清理,则无需在从数据库中检索数据时删除斜杠。

我个人使用HTML purifier来清理输入。

md5也许不是最好的解决方案,使用像sha-128这样的东西

答案 3 :(得分:-1)

安全真的有必要吗?

是的。

您在进入数据库的过程中清理数据(使用mysql_real_escape_string)以防止意外数据损坏或故意sql注入。

您在出路时逃避数据(使用htmlentities)以防止跨站点脚本(xss)。

两者都非常不同,而且非常重要。