我是ColdFusion的新手,所以我不确定是否有简单的方法可以做到这一点。我被指派去修复这个CF站点上的XSS漏洞。不幸的是,有大量的页面正在接受用户的输入,而且几乎不可能全部进入并修改它们。
有没有办法(在CF或JS中)轻松地阻止整个站点的XSS攻击?
发布于 2010-09-04 03:10:11
我不想告诉你,但是-
有关如何防止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。这就是为什么建议将字符串完全按照用户输入的方式存储在数据库中,然后根据字符串的最终目标对其进行适当转义。
发布于 2010-09-04 03:29:14
你应该考虑的一件事是实现一个像Portcullis这样的应用程序防火墙:http://www.codfusion.com/blog/page.cfm/projects/portcullis,它包含一个比内置scriptProtect更强大的系统,而后者很容易被击败。
这是防止许多攻击的一个很好的起点,但是对于XSS,您最终将手动进入并验证您是否在客户端或客户端数据可以接触到的任何输出上使用了HTMLEditFormat()之类的东西,以防止输出有效的html/js代码。
发布于 2010-09-04 02:46:40
ColdFusion 9 Livedocs描述了一个名为"scriptProtect“设置,该设置允许您利用coldfusion的保护。我还没有用过它,所以我不确定它有多有效。
但是,如果您实现了第三方或您自己的方法来处理它,那么您很可能希望将它放在应用程序的"onRequestStart“事件中,以便在遇到URL和表单范围冲突时允许它处理整个站点(因为每个请求都会执行该代码)。
https://stackoverflow.com/questions/3638619
复制相似问题