为什么要使用上下文敏感编码来防止 XSS?

信息安全 xss 编码
2021-08-28 05:42:43

OWASP建议需要进行上下文相关编码。请帮助我获得几个强大的“代码示例”,说明为什么需要进行基于上下文敏感的编码以及为什么单独的 HTML 编码在这些情况下无济于事?

我知道它可以帮助未引用的属性(也在2中解释)但现在让我们假设整个世界都在使用引用的属性 [我知道这是不可能的,但让我们假设:/],你能帮我提供两个如果我们使用3提供的上下文相关编码函数(这是我所知道的市场上唯一的上下文相关编码库),HTML 编码将无济于事并导致 XSS 攻击的示例?

1个回答

我将使用一些示例,其中各种形式的 HTML 编码都无济于事。这些都是我在实践中实际看到的案例。我将使用{{foo}}要替换的变量。我假设 HTML 编码涉及替换<with&lt;>with &gt;如果你同时转义单引号和双引号,其中一些将不再可利用,但有些将是。

<script>var x = '{{foo}}';</script>
<a href="{{foo}}">Clicky</a>
<script>/** Comment {{foo}} */</script>
<html ng-app='myapp'>{{foo}}</html>

您可能想查看此博客文章以了解更多详细信息