对带有 html 实体的文本框执行 jQuery val()

2024-02-27

我已经使用简单的 js 小提琴设置了我的问题http://jsfiddle.net/um788f6q/ http://jsfiddle.net/um788f6q/

<input type="text" id="yo">
$("#yo").val('hell&#39;o')

基本上我想知道是否有一种方法可以显示撇号而不是编码字符串。我已经在服务器上对这样的值进行了编码,以防止 xss 攻击,因此解码实际上并不是一个有效的选项。

Thanks


基本上我想知道是否有一种方法可以显示撇号而不是编码字符串。

没什么理智的。

value 属性处理文本,而不是 HTML。

作为一个可怕的黑客,你可以通过解析 HTML 然后读取生成的文本节点将其转换为文本。

$("#yo").val($("<div />").html('hell&#39;o').text());

……但不要。而是解决真正的问题。

我在服务器上对这样的值进行了编码,以防止 xss 攻击

不要那样做。

您将数据插入 JavaScript,而不是 HTML。

当您不处理 HTML 时,不要使用 HTML 防御。它可能会让你变得脆弱。

对插入 JavaScript 的数据进行编码的适当方法是使用 JSON 编码器。 (如果您将 JSON 放入 HTML 属性值中,则使用实体对生成的 JSON 进行编码,或者转义任何/字符,如果你把它放在<script>元素)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对带有 html 实体的文本框执行 jQuery val() 的相关文章