是否有任何预制脚本可用于 PHP / MySQL 来防止服务器端脚本和 JS 注入?
我知道一些典型的函数,例如 htmlentities、特殊字符、字符串替换等。但是是否有一些简单的代码或函数可以万无一失?
任何想法都会很棒。非常感谢 :)
EDIT:一些通用的东西可以去除任何可能危险的东西,即。大于/小于符号、分号、“DROP”等单词?
我基本上只是想将所有内容压缩为字母数字,我猜......?
切勿将任何数据位输出到尚未传递的 HTML 流htmlspecialchars()
你就完成了。规则简单,易于遵循,彻底杜绝任何 XSS 风险。
作为一名程序员是这样的your不过,有工作要做。
您可以定义
function h(s) { return htmlspecialchars(s); }
if htmlspecialchars()
每个 PHP 文件写入 100 次太长了。另一方面,使用htmlentities()
根本没有必要。
关键是:有代码,有数据。如果将两者混合在一起,就会发生不好的事情。
对于 HTML,代码是元素、属性名称、实体、注释。数据就是一切。数据must进行转义以避免被误认为是代码。
对于 URL,代码是方案、主机名、路径、查询字符串的机制(?
, &
, =
, #
)。数据是查询字符串中的所有内容:参数名称和值。他们must进行转义以避免被误认为是代码。
嵌入 HTML 中的 URLmust双重转义(通过 URL 转义andHTML 转义)以确保代码和数据的正确分离。
现代浏览器能够将令人惊讶的损坏和不正确的标记解析为有用的东西。不过,不应强调这种能力。事实上,某些事情发生了(比如 URL<a href>
没有应用适当的 HTML 转义)并不意味着这样做是好的或正确的。 XSS 是一个根源于 a) 人们不知道数据/代码分离(即“转义”)或那些马虎的人;b) 人们试图聪明地了解他们不需要转义数据的哪些部分。
如果您确保不属于 a) 和 b) 类,那么 XSS 很容易避免。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)