首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在站点范围内防止XSS攻击

问在站点范围内防止XSS攻击
EN

Stack Overflow用户
提问于 2010-09-04 02:37:20
回答 4查看 19.6K关注 0票数 6

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

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-09-04 03:10:11

我不想告诉你,但是-

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

有关如何防止XSS的信息,请参阅OWASP's XSS prevention cheat sheet。

​

下面的一些评论表明,输入验证是比在输出时编码/转义更好的策略。我只引用OWASP's XSS prevention cheat sheet的话-

​

传统上,输入验证一直是处理不可信数据的首选方法。然而,对于注入攻击,输入验证并不是一个很好的解决方案。首先,输入验证通常是在收到数据时,在知道目的地之前完成的。这意味着我们不知道哪些字符在目标解释器中可能是重要的。其次,可能更重要的是,应用程序必须允许中存在潜在的有害字符。例如,应该仅仅因为SQL认为“一个特殊字符”而阻止可怜的O‘’Malley先生在数据库中注册吗?

更详细地说,当用户输入像O‘’Malley这样的字符串时,你不知道你需要的是javascript中的字符串,还是html中的字符串,或者其他语言中的字符串。如果它是用javascript编写的,你必须把它渲染成O\x27Malley,如果它是用HTML编写的,它应该看起来像O'Malley。这就是为什么建议将字符串完全按照用户输入的方式存储在数据库中,然后根据字符串的最终目标对其进行适当转义。

票数 38
EN

Stack Overflow用户

发布于 2010-09-04 03:29:14

你应该考虑的一件事是实现一个像Portcullis这样的应用程序防火墙:http://www.codfusion.com/blog/page.cfm/projects/portcullis,它包含一个比内置scriptProtect更强大的系统,而后者很容易被击败。

这是防止许多攻击的一个很好的起点,但是对于XSS,您最终将手动进入并验证您是否在客户端或客户端数据可以接触到的任何输出上使用了HTMLEditFormat()之类的东西,以防止输出有效的html/js代码。

票数 1
EN

Stack Overflow用户

发布于 2010-09-04 02:46:40

ColdFusion 9 Livedocs描述了一个名为"scriptProtect“设置,该设置允许您利用coldfusion的保护。我还没有用过它,所以我不确定它有多有效。

但是,如果您实现了第三方或您自己的方法来处理它,那么您很可能希望将它放在应用程序的"onRequestStart“事件中,以便在遇到URL和表单范围冲突时允许它处理整个站点(因为每个请求都会执行该代码)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3638619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档