为什么很多人在字符串上使用这两个函数?我看到了很多stripslashes(strip_tags($field));
(或者反过来)
是不是strip_tags
可以过滤任何xss的东西和这样的东西?
转义数据与strip_tags
或无关stripslashes
.这些函数从字符串中过滤掉某些字符,而"转义"则对某些字符进行编码,因此它们不会被浏览器或数据库解释.
您可以使用strip_tags
从浏览器中删除发送到PHP的字符串中的HTML标记.更好的是,strip_tags
如果您htmlspecialchars
在将数据发送回浏览器时用于转义可能分隔标记的任何字符,您还可以安全地存储相同的数据而不通过它.
stripslashes
从字符串中删除斜杠,如果启用了"魔术引号",您只需要担心它.从早期的时候开始,当PHP开发人员天真地假设来自浏览器的每一段数据都指向数据库并且开发人员不能被信任以逃避数据库本身时.
strip_tags不足以过滤任何xss的东西吗?
不.过滤XSS内容的唯一安全方法是htmlspecialchars()
,虽然我看到许多建议strip_tags()
另外使用.
请参阅此问题中的讨论:阻止XSS和SQL注入就像这样简单......
什么stripslashes
是应该在这方面做的,我不知道.这可能是试图撤消现在已弃用的魔术引号函数的效果 - 但是如果不首先检查是否启用了特定功能,则不应该应用此功能.