2

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

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

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

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

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

问题:

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

[2] 我这样做是否会引入安全漏洞?

4

2 回答 2

2

很可能是一种更直接的方法,但似乎得到了预期的结果。

http://jsfiddle.net/ZPLTc/

更多信息在这里(我得到概念的地方)http://debuggable.com/posts/encode-html-entities-with-jquery:480f4dd6-13cc-4ce9-8071-4710cbdd56cb

于 2012-04-12T21:36:37.383 回答
0

您可以使用“替换”将 HTML 实体更改为“<”和“>”:https ://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace 。只要您只使用文本框中的字符串,这不会引入漏洞。如果将其放入 div 或输入框以外的任何内容,标签将被暴露。

于 2012-04-12T21:38:11.950 回答