XSS 攻击媒介
XSS attack vectors
除了从文本字段中找到返回页面的未经过滤的输入之外,网站还有哪些常见的 XSS 向量?试图防止恶意访问 cookie 中的 csrf 令牌。我正在从文本输入中转义不安全的字符(可能最终会在 Java servlet 中以及在数据库插入或打印到 UI 之前添加它)。我还应该在哪里寻找 XSS 进入网站?
如果我对问题的理解正确,您通过对来自 UI.
上输入字段的用户输入进行编码,减轻了某些形式的反射和存储 XSS。
你应该知道一些事情:
- 并非所有用户输入都是通过 UI 输入字段。 Cookie 和请求 headers 也是用户输入的示例,当然还有隐藏字段或 json/xml/any 其他类型的参数。如果您的应用程序处理任何文件或接收除 http 之外的外部请求,那么这些也是用户输入。即使是数据库的字段也最好被视为用户输入并在将它们写入页面时进行编码,尤其是当其他组件也写入数据库时。
- 也许在您的应用程序中已经是这种情况,但为了使这个答案更全面:XSS 更多的是一个输出问题,无论用户输入来自何处,大多数时候解决方案是输出编码(并且不输入验证/清理 本身 ,尤其是不使用黑名单)。不过可能会有一些例外,当然输入验证确实很好地补充了正确的输出编码。
- 应根据写入数据的上下文选择编码方法(即写入 javascript 块或普通 html 时需要不同的编码;另请注意 javascript 块不仅在脚本标签内,而且在例如 onclick 等事件属性内)。
- DOM XSS 完全在客户端上,必须在 Javascript 中缓解。请参阅下面的相关 OWASP 指南。
一般OWASP XSS page很有用。
他们也有一些指南:
除了从文本字段中找到返回页面的未经过滤的输入之外,网站还有哪些常见的 XSS 向量?试图防止恶意访问 cookie 中的 csrf 令牌。我正在从文本输入中转义不安全的字符(可能最终会在 Java servlet 中以及在数据库插入或打印到 UI 之前添加它)。我还应该在哪里寻找 XSS 进入网站?
如果我对问题的理解正确,您通过对来自 UI.
上输入字段的用户输入进行编码,减轻了某些形式的反射和存储 XSS。你应该知道一些事情:
- 并非所有用户输入都是通过 UI 输入字段。 Cookie 和请求 headers 也是用户输入的示例,当然还有隐藏字段或 json/xml/any 其他类型的参数。如果您的应用程序处理任何文件或接收除 http 之外的外部请求,那么这些也是用户输入。即使是数据库的字段也最好被视为用户输入并在将它们写入页面时进行编码,尤其是当其他组件也写入数据库时。
- 也许在您的应用程序中已经是这种情况,但为了使这个答案更全面:XSS 更多的是一个输出问题,无论用户输入来自何处,大多数时候解决方案是输出编码(并且不输入验证/清理 本身 ,尤其是不使用黑名单)。不过可能会有一些例外,当然输入验证确实很好地补充了正确的输出编码。
- 应根据写入数据的上下文选择编码方法(即写入 javascript 块或普通 html 时需要不同的编码;另请注意 javascript 块不仅在脚本标签内,而且在例如 onclick 等事件属性内)。
- DOM XSS 完全在客户端上,必须在 Javascript 中缓解。请参阅下面的相关 OWASP 指南。
一般OWASP XSS page很有用。 他们也有一些指南: