执行jQuery';s val()和prop()方法html转义值?

执行jQuery';s val()和prop()方法html转义值?,jquery,html,escaping,Jquery,Html,Escaping,我在文档中找不到关于和逃跑的任何信息 它们用作setter时是否打算转义值?它们需要字符串,而不是HTML。你不需要逃避任何事情 这些方法本身也不做任何转义,它们使用的底层domapi也处理字符串,而不是HTML 一旦开始使用JavaScript,您几乎不需要担心HTML语法,我能想到的唯一例外是处理innerHTML属性时,该属性显式地处理从HTML到DOM的(反)序列化。不太可能.val()用于设置表单字段的值属性,因此在那里实际上不需要转义。您将通过DOM设置值,因此不像是通过字符串连接来

我在文档中找不到关于和逃跑的任何信息


它们用作setter时是否打算转义值?

它们需要字符串,而不是HTML。你不需要逃避任何事情

这些方法本身也不做任何转义,它们使用的底层domapi也处理字符串,而不是HTML

一旦开始使用JavaScript,您几乎不需要担心HTML语法,我能想到的唯一例外是处理
innerHTML
属性时,该属性显式地处理从HTML到DOM的(反)序列化。

不太可能
.val()
用于设置表单字段的
属性,因此在那里实际上不需要转义。您将通过DOM设置值,因此不像是通过字符串连接来构建HTML<另一方面,code>.prop()甚至根本不与属性交互——只与DOM属性交互,因此您也不需要处理HTML转义属性


编辑:为了澄清,我假设你问这个是因为你担心<代码> .pUBS>(代码)>或<代码> .Value//C>作为XSS攻击向量(或者仅仅是一个在你的脚上开枪的机会)?如果是这种情况,您需要记住,当通过DOM设置属性和属性时,您设置的值本质上是沙盒到您正在交互的属性或值。例如,考虑到以下情况:

<div id="foo"></div>
<div id="foo" rel=""></div><script>alert("bang");</script><div rel=""></div>

您试图滥用属性值,例如:

$('#foo').attr('rel', '"></div><script>alert("bang");</script><div rel="');

警报(“砰”)我只想补充一点,在属性中插入值时,您确实需要担心会导致代码执行的副作用。这些副作用包括可用于xss的image src attribute。请参阅:

可能需要澄清的是,底层DOM API也不会真正转义任何内容。当您设置属性和属性时值,您不会创建新的标记或DOM节点或任何此类节点,因此转义在某种程度上不是问题。@Quentin.设置图像的src的jquery.attr()方法是否与此相同?即$(“#profile_pic”).attr('src',profile_image);我需要担心在这里编码变量profile_图像吗?当我尝试使用ESAPI EncodeforHtmlatAttribute()编码它时,它无论如何都不工作,所以我猜我不需要这样做?感谢浏览器的良好链接jQuery源->因此将元素的
值设置为
邪恶字符串
永远不会导致任何问题?正确-从元素中检索该值后,关于该值的处理方式,任何危险都会在该字符串的下游。这也假设您是通过
.val()进行设置的
或其他支持DOM API的方法。我只是用一些澄清扩展了我的答案。@jmar777设置图像src的jquery.attr()方法是否与jquery.attr()方法相同?例如$(“#profile_pic”).attr('src',profile_image);我需要担心在这里编码变量profile_image吗?当我尝试使用ESAPI encodeForHTMLAttribute()对其进行编码时反正不行,所以我猜我不需要了?thanks@Sarah没错,不需要对其进行编码。分配给SRC属性的值不会被解释为标记。@ Sarah Sorry对于延迟响应,但是,是的,通过字符串连接生成HTML非常小心!如果我小心,那绝对是一个XSS攻击向量。sn不了解编码。我不熟悉
encodeForHTMLAttribute()
(看起来这是一个ColdFusion实用程序?),但我建议在这里进一步阅读该主题: