在我的注册表单上,我有四个输入:
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
已用于与数据库通信
一句话:
-
当你添加你的数据到数据库-使用PDO的预置语句与占位符。
-
当你从html页面的任何地方输出一些东西时-你需要执行
htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
,其中$string
是你想以"安全"的方式输出的字符串。
首先,您需要明确您想要消毒的内容。
因为你使用了所有准备好的语句,所以不需要:mysql_real_escape_string ()
如果你不想让你的用户使用html,为了避免XSS,你应该使用strip_tags ()
保护你的html显示不受不可打印字符的影响htmlentities ()但在UTF-8时代,它有点过时了。
可用于密码输入削减()因为如果您的用户复制带有前导/附加空格的密码,它会有所帮助。因为outlook添加了空格。但并不是每个人都认为这是一个好主意,以减少密码。
取决于你的模板系统,这可能是一个好主意addslashes ()对于像
这样的预定义输入值<input type="text" value="<?php addslashes($value); ?>" />
因为可以这样做:
my value " /><script>evil things</script><
在自动完成表单中使用某种XSS