Click to Show 如您-6ren">
gpt4 book ai didi

javascript - jQuery 不在 .html() 方法中解析转义的 HTML

转载 作者:行者123 更新时间:2023-11-30 18:06:22 25 4
gpt4 key购买 nike

以这个 HTML 为例:

<td onclick="$(this).html('Wanted HTML: <br>; Unwanted HTML: &lt;script&gt;alert(&#39;xss&#39;)&lt;/script&gt;')">
Click to Show</td>

如您所见,我已经(使用 PHP)将不需要的 HTML 转义为实体。但是,当您单击该框时,它会执行 JavaScript。

如果我改变 .html.text , 它也按字面显示换行符。

我怎样才能让它显示 <br> s 作为换行符,但是 &lt; s 和 &gt;当您单击该框时,它真的是小于号和大于号吗?

最佳答案

问题是您的字符在到达 JavaScript 函数之前在 onclick 中被解码。

您需要双重编码。所以你的例子会变成:

<td onclick="$(this).html('Wanted HTML: &lt;br&gt;; Unwanted HTML: &amp;lt;script&amp;gt;alert(&amp;#39;xss&amp;#39;)&amp;lt;/script&amp;gt;')">
Click to Show
</td>

请注意,我对您确实想要的标签进行了编码(单编码)。我还在第一个 > 上添加了缺少的分号。

当然,更好的解决方案是将其从 HTML 中完全删除。大多数开发人员都认为 JavaScript 是为了交互而 HTML 是为了内容,他们应该尽可能少地混合使用(JavaScript 通过 addEventHandler 等调用 Hook 到内容中)

关于javascript - jQuery 不在 .html() 方法中解析转义的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15714371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com