Jquery 在$(“textbox”).val()调用之前解码文本?
我的网页对服务器进行AJAX调用,并在浏览器中显示结果。结果的内容通常包含用户在AJAX请求中提交的文本字符串的一部分。因此,如果用户在其查询中键入Jquery 在$(“textbox”).val()调用之前解码文本?,jquery,textbox,decode,encode,Jquery,Textbox,Decode,Encode,我的网页对服务器进行AJAX调用,并在浏览器中显示结果。结果的内容通常包含用户在AJAX请求中提交的文本字符串的一部分。因此,如果用户在其查询中键入,则返回的输出也可能包含短语。但是,服务器在发送响应之前对其进行编码,因此返回的短语实际上将作为script 这一切都很好。脚本漏洞被删除,浏览器在显示响应时正确显示 问题是当我想要获取返回值并将其填充到文本框中时。考虑: $(“#someTextBox”).val(“<script>”); 文本框的内容以编码形式(即脚
,则返回的输出也可能包含短语
。但是,服务器在发送响应之前对其进行编码,因此返回的短语实际上将作为script
这一切都很好。脚本漏洞被删除,浏览器在显示响应时正确显示
问题是当我想要获取返回值并将其填充到文本框中时。考虑:
$(“#someTextBox”).val(“<script>”);
文本框的内容以编码形式(即脚本
)显示,而不是以解码形式(即
)显示
问题:
[1] 在调用val()之前,如何解码该值
[2] 我这样做是否引入了安全漏洞?很可能是一种更直接的方法,但似乎得到了预期的结果
这里有更多信息(我从中得到了概念)您可以使用“替换”将HTML实体更改为“”。只要您只使用文本框中的字符串,就不会引入漏洞。如果您将其放入div或输入框以外的任何内容中,标签将被暴露。谢谢。可以使用以下代码应用您的解决方案:
return$(“”).html(encodedText.text()此站点上的其他帖子表明,此技术只应用于受信任的数据。在我的例子中,我信任AJAX服务器,因为它正确地编码了它的响应。但是,一个不受信任的服务器返回一个未编码的
块会触发该脚本的执行——尽管时态
甚至没有连接到DOM。啊,是的,-这是有意义的。有意义的——尽管这样我不仅要替换尖括号,还要替换其他所有可转义字符(如报价等)