解码$(“#textbox”)之前的文本.val()调用?

时间:2012-04-12 21:29:32

标签: jquery textbox decode encode

我的网页对服务器进行AJAX调用,并在浏览器中显示结果。结果的内容通常包含用户在AJAX请求中提交的文本字符串的一部分。因此,如果用户在其查询中键入<script>,则返回的输出也可能包含短语<script>。然而,服务器在发送响应之前对响应进行编码,因此返回的短语实际上将作为&lt;script&gt;接收

这一切都很好。删除脚本漏洞,浏览器在显示响应时正确显示<script>

问题是当我想获取返回值并将其填入文本框时。考虑:

$(“#someTextBox”).val(“&lt;script&gt;”);

文本框的内容以编码形式显示(即&lt;script&gt;),而不是以解码形式显示(即<script>)。

问题:

[1]如何在调用val()之前解码该值?

[2]我是通过这样做引入安全漏洞的吗?

2 个答案:

答案 0 :(得分:2)

这可能是一种更直接的方法,但似乎得到了理想的结果。

http://jsfiddle.net/ZPLTc/

此处有更多信息(我有概念)http://debuggable.com/posts/encode-html-entities-with-jquery:480f4dd6-13cc-4ce9-8071-4710cbdd56cb

答案 1 :(得分:0)

您可以将HTML实体更改为“&lt;”和'&gt;'使用'替换':https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace。只要您只在文本框中使用字符串,这不会引入漏洞。如果你将它放入div或输入框以外的任何东西,标签将被曝光。