2

我正在阅读 OWASP XSS 预防备忘单,并陷入了一些理解:

为什么我不能只用 HTML 实体编码不受信任的数据

HTML 实体编码适用于您放入 HTML 文档正文(例如<div>标签内)的不受信任的数据。它甚至适用于进入属性的不受信任的数据,特别是如果您热衷于在属性周围使用引号。<script>但是,如果您将不受信任的数据放在任何地方的标签中,或者像 onmouseover 这样的事件处理程序属性中,或者在 CSS 中,或者在 URL 中,则 HTML 实体编码不起作用。因此,即使您在任何地方都使用 HTML 实体编码方法,您仍然很可能容易受到 XSS 的攻击。您必须对要放入不受信任数据的 HTML 文档部分使用编码语法。这就是以下规则的全部内容。

我无法创建有效的 POC,html 编码的 xss 攻击向量如何在<script>标签内触发 xss

帮助我理解这一点。

4

1 回答 1

2

HTML 编码是指<&lt;>和替换(&gt;以及其他替换)。该段落的意思是,这确实会阻止普通标签内的 XSS,例如,如果您尝试注入标签,您会得到:&&amp;<script>alert(1)</script>p

<p>&gt;script&lt;alert(1)&gt;/script&lt;</p>

这没有任何作用。但是,如果 XSS 向量进入脚本标签而不是 ap 标签,那么您可以直接输入alert(1),它最终会变成:

<script>alert(1)</script>

这会导致 XSS。

于 2020-07-27T20:06:46.343 回答