在我的注册表格中,我有四个输入:
username
password
email address
web address
无法确定真正需要哪种消毒方法:
strip_tags()
substr()
mysql_real_escape_string()
trim()
htmlentities()
addslashes()
. . . (you may add more)
在某处我发现函数是must have
,此函数声明为deprecated
或less valuable the another one ...
有人可以如此友好地为上面的所有四个输入创建优先级列表。
注意:PDO - prepared statements
已用于与数据库通信。
答案 0 :(得分:6)
用几句话说:
将数据添加到数据库时 - 使用带有占位符的PDO预处理语句。就是这样,没有其他任何东西需要。
当您从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。