这个问题有各种微妙之处,尽管答案一般是肯定的.
您网站的安全性在很大程度上取决于您放置数据的位置.如果你把它作为合法文本,攻击者基本上没有办法执行XSS.如果将其放在属性中,如果您忘记了引号或不检查多字节格式,则可能存在攻击.如果你把它放在一个JSON变量中,那么没有正确的转义会导致任意的JavaScript.等等.上下文非常重要.
其他用户建议使用XSS删除或XSS检测功能.我倾向于认为XSS删除是用户不友好的; 如果我发布一个像<foo@example.com>这样的电子邮件地址,并且你的删除XSS功能认为它是一个HTML标签,那么这个文本就会神秘地消失.如果我正在运行XSS论坛,我不希望删除人们的示例代码.检测更加明智; 如果您的应用程序可以告诉某人何时攻击它,它可以禁止IP地址或用户帐户.但是,您应该小心这种功能; 无辜者可以而且会陷入交火之中.
验证是网站逻辑的重要组成部分,但它也独立于转义.如果我不验证任何东西,但逃避一切,将不会有XSS攻击,但有人可以说他们的生日是"音乐死亡的那一天",并且应用程序不会更明智.从理论上讲,对某些数据类型进行严格的验证可以执行转义的所有职责(思考数字,枚举等),但无论如何,这是防御的一般良好做法.即使你是100%它也是一个整数.它可能不是.
逃避明文是一个微不足道的问题; 如果你的语言不给你一个功能,一个字符串替换为<
,>
,"
,'
以及&
与其相应的HTML实体会做的伎俩.(只有在不使用UTF-8时才需要其他HTML实体).允许HTML标记非常重要,并且值得拥有自己的Stack Overflow问题.
归档时间: |
|
查看次数: |
5259 次 |
最近记录: |