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

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


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

谢谢

最佳答案

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


没理智

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

作为一个可怕的技巧,您可以通过解析HTML,然后读取结果文本节点,将其转换为文本。

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


……但是不要。解决实际的问题。


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


不要那样做

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

当您不处理HTML时,请勿对HTML使用防御措施。它可能使您容易受到攻击。

编码要插入JavaScript的数据的合适方法是使用JSON编码器。 (然后,如果将JSON放入HTML属性值中,则使用实体对结果JSON进行编码;如果将JSON放入/元素中,则转义任何<script>字符)。

07-24 09:50
查看更多