0

除了从文本字段中找到返回页面的未经处理的输入之外,网站还有哪些常见的 XSS 向量?试图防止恶意访问 cookie 中的 csrf 令牌。我正在从文本输入中转义不安全的字符(可能最终会在数据库插入或打印到 UI 之前将其添加到 Java servlet 中)。我还应该在哪里寻找进入网站的 XSS?

4

1 回答 1

1

如果我正确理解了这个问题,您可以通过对 UI 上的输入字段中的用户输入进行编码来缓解某些形式的反射和存储 XSS。

你应该知道一些事情:

  • 并非所有用户输入都通过 UI 输入字段。Cookie 和请求标头也是用户输入的示例,当然还有隐藏字段或 json/xml/任何其他类型的参数。如果您的应用程序处理任何文件或接收除 http 之外的外部请求,这些也是用户输入。即使是数据库的字段也最好被视为用户输入并在将它们写入页面时进行编码,尤其是在其他组件也写入数据库的情况下。
  • 也许您的应用程序中已经存在这种情况,但为了使这个答案更全面:XSS 更多的是输出问题,无论用户输入来自何处,解决方案大多数时候都是输出编码(而不是输入验证/清理本身,尤其是没有黑名单)。不过,可能会有一些例外情况,当然输入验证确实可以很好地补充正确的输出编码。
  • 编码方法应根据数据写入的上下文选择(即,写入 javascript 块或纯 html 时需要不同的编码;另请注意,javascript 块不仅在脚本标签内,而且例如在事件属性内像 onclick 和其他)。
  • DOM XSS 完全在客户端,并且必须在 Javascript 中进行缓解。请参阅下面的相关 OWASP 指南。

一般的OWASP XSS 页面非常有用。他们也有一些指南:

于 2016-09-10T21:47:22.943 回答