0

在我的注册表单上,我有四个输入:

username  
password
email address
web address

无法确定真正需要所有可用的消毒方法中的哪一种:

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

在某处我发现一个函数是 a must have,在某处这个函数被声明为deprecatedorless valuable the another one ...

有人可以为上述所有四个输入创建一个优先级列表吗?

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

4

2 回答 2

7

简单来说:

  1. 当您将数据添加到数据库时 - 使用 PDO 的预准备语句和占位符。就是这样,不需要其他任何东西。

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

于 2013-01-14T06:18:19.977 回答
-6

首先,您需要清楚帽子,因为您喜欢消毒。

因为您使用了所有准备好的语句,所以不需要: mysql_real_escape_string()

如果您想拒绝您的用户使用 html,为了避免XSS,您也许应该使用 strip_tags()

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

对于密码输入,可以使用 trim() ,因为如果您复制带有前导/附加空格的密码,它会有所帮助。因为前景添加了空格。但并不是每个人都认为这是一个好主意,以修剪密码。

取决于您的模板系统,使用 addlashes() 处理预定义的输入值可能是个好主意,例如

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

因为它可以做到:

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

在自动完成表单中有某种 XSS。

于 2013-01-14T06:25:04.593 回答