javascript - 防止站点范围内的 XSS 攻击

标签 javascript html security coldfusion xss

我是 ColdFusion 的新手,所以我不确定是否有一种简单的方法可以做到这一点。我被指派在这个 CF 站点上修复整个站点的 XSS 漏洞。不幸的是,有大量页面需要用户输入,几乎不可能全部修改。

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

最佳答案

我不想告诉你,但是 -

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

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


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

Traditionally, input validation has been the preferred approach for handling untrusted data. However, input validation is not a great solution for injection attacks. First, input validation is typically done when the data is received, before the destination is known. That means that we don't know which characters might be significant in the target interpreter. Second, and possibly even more importantly, applications must allow potentially harmful characters in. For example, should poor Mr. O'Malley be prevented from registering in the database simply because SQL considers ' a special character?

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

关于javascript - 防止站点范围内的 XSS 攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3638619/

相关文章:

javascript - 每 30 秒运行一次 ajax 并显示倒数计时器

javascript - 每次触发 'sessionStorage.fgattempt' 或 'fgMade()' 时,如何增加 'threeMade()' 的值?

javascript - Websockets 请求-响应映射

javascript - React Hooks 状态未更新

javascript - 如何在 javascript 对象文字中多次正确传递参数?

javascript - 在 FireFox 中滚动时固定定位的 div 移动到一边,在其他浏览器中工作正常

Java 7u45 安全警告 : Allow access to the following application from this web site?

java - 是否可以在 Android 中注册 java 安全提供程序?

algorithm - 中间盒遍历的安全成本

c# - 突出显示所选文本并保存