如果我重新显示网站用户输入的任何数据的HTML编码,这会阻止CSS漏洞吗?
此外,是否有可用的工具/产品将为我清理我的用户输入,因此我不必编写自己的例程.
这个问题有各种微妙之处,尽管答案一般是肯定的.
您网站的安全性在很大程度上取决于您放置数据的位置.如果你把它作为合法文本,攻击者基本上没有办法执行XSS.如果将其放在属性中,如果您忘记了引号或不检查多字节格式,则可能存在攻击.如果你把它放在一个JSON变量中,那么没有正确的转义会导致任意的JavaScript.等等.上下文非常重要.
其他用户建议使用XSS删除或XSS检测功能.我倾向于认为XSS删除是用户不友好的; 如果我发布一个像
验证是网站逻辑的重要组成部分,但它也独立于转义.如果我不验证任何东西,但逃避一切,将不会有XSS攻击,但有人可以说他们的生日是"音乐死亡的那一天",并且应用程序不会更明智.从理论上讲,对某些数据类型进行严格的验证可以执行转义的所有职责(思考数字,枚举等),但无论如何,这是防御的一般良好做法.即使你是100%它也是一个整数.它可能不是.
逃避明文是一个微不足道的问题; 如果你的语言不给你一个功能,一个字符串替换为<
,>
,"
,'
以及&
与其相应的HTML实体会做的伎俩.(只有在不使用UTF-8时才需要其他HTML实体).允许HTML标记非常重要,并且值得拥有自己的Stack Overflow问题.