防止站点范围内的XSS攻击

Ste*_*ven 6 html javascript security xss coldfusion

我是ColdFusion的新手,所以我不确定是否有一种简单的方法可以做到这一点.我被指派在这个CF站点修复站点范围内的XSS漏洞.不幸的是,有大量的页面正在接受用户输入,并且几乎不可能进入并修改它们.

有没有办法(在CF或JS中)轻松防止整个站点的XSS攻击?

Sri*_*nan 37

我讨厌把它分给你,但是 -

  1. XSS是输出问题,而不是输入问题.过滤/验证输入是一个额外的防御层,但它永远无法完全保护您免受XSS的侵害.看看RSnake的XSS cheatsheet - 逃避过滤器的方法太多了.
  2. 没有简单的方法来修复遗留应用程序.您必须正确编码放在html或javascript文件中的任何内容,这意味着重新访问生成html的每一段代码.

有关如何预防XSS的信息,请参阅OWASP的XSS预防备忘单.


下面的一些评论表明输入验证是一种更好的策略,而不是在输出时编码/转义.我将引用OWASP的XSS预防备忘单 -

传统上,输入验证是处理不受信任数据的首选方法.但是,输入验证不是注入攻击的理想解决方案.首先,输入验证通常在接收数据时,在目的地已知之前完成.这意味着我们不知道目标解释器中哪些字符可能很重要.其次,甚至可能更重要的是,应用程序必须允许潜在有害的字符.例如,如果可怜的O'Malley先生被禁止在数据库中注册,仅仅因为SQL认为是一个特殊字符?

详细说明 - 当用户输入像O'Malley这样的字符串时,您不知道是否需要javascript,html或其他语言的字符串.如果它在javascript中,你必须将其渲染为O\x27Malley,如果它在HTML中,它应该看起来像O'Malley.这就是为什么建议在数据库中字符串应该以用户输入的方式存储,然后根据字符串的最终目的地适当地转义它.

  • @Klinky - 请参阅我更新的回复.输入过滤*有助于*,但不是XSS的可靠解决方案. (4认同)