安全表单输入需要哪些功能?

时间:2013-01-14 06:10:59

标签: php forms security input

在我的注册表格中,我有四个输入:

username  
password
email address
web address

无法确定真正需要哪种消毒方法:

strip_tags()
substr()
mysql_real_escape_string()
trim()
htmlentities()
addslashes()
. . . (you may add more)

在某处我发现函数是must have,此函数声明为deprecatedless valuable the another one ...

有人可以如此友好地为上面的所有四个输入创建优先级列表。

注意:PDO - prepared statements已用于与数据库通信。

2 个答案:

答案 0 :(得分:6)

用几句话说:

  1. 将数据添加到数据库时 - 使用带有占位符的PDO预处理语句。就是这样,没有其他任何东西需要。

  2. 当您从html页面的任何位置输出内容时 - 您需要执行htmlspecialchars($string, ENT_QUOTES, 'UTF-8');,其中$string是您想要以“安全”方式输出的字符串。

答案 1 :(得分:-5)

首先,您需要明确帽子,因为您喜欢消毒。

因为您使用allready prepared statements,所以不需要: mysql_real_escape_string()

如果您想拒绝用户使用html,请避免使用XSS strip_tags()

要确保您的html显示不再是可打印的字符 htmlentities() 但在UTF-8时代,它有点过时了。

对于密码输入,可以使用它 trim() 因为如果youser使用前导/附加空间复制密码会有帮助。 因为outlook增加了空间。但并不是每个人都认为修剪密码是个好主意。

取决于你的模板系统,使用它是个好主意 addslashes() 对于预定义的输入值,如

<input type="text" value="<?php addslashes($value); ?>" />

因为可以这样做:

my value " /><script>evil things</script><

在自动填充表单中使用某种XSS。