jma*_*777 26
并不是的..val()
用于设置表单字段的value
属性,因此在那里不需要转义.您将通过DOM设置值,因此它不像您通过字符串连接构建HTML. .prop()
另一方面,甚至根本不与属性交互 - 只是DOM属性,所以你不需要处理HTML转义它们.
编辑:为了澄清,我假设你问这个是因为你关心.prop()
或.val()
作为一个XSS攻击向量(或只是一个机会射击自己的脚)?如果是这种情况,您需要记住,当通过DOM设置属性和属性时,您设置的值基本上被沙箱化为您正在与之交互的属性或值.例如,给出以下内容:
<div id="foo"></div>
Run Code Online (Sandbox Code Playgroud)
并且您试图滥用属性值,例如:
$('#foo').attr('rel', '"></div><script>alert("bang");</script><div rel="');
Run Code Online (Sandbox Code Playgroud)
您可能会担心这会导致类似以下内容:
<div id="foo" rel=""></div><script>alert("bang");</script><div rel=""></div>
Run Code Online (Sandbox Code Playgroud)
但这绝不会发生.您确实rel
会将具有邪恶字符串的属性作为其值,但不会创建新的标记或DOM节点.字符串本身不会被转义 - 它只是不被解释为标记.它只是一个字符串,就是这样.
他们期望字符串,而不是HTML.你不需要逃避任何事情.
这些方法本身也没有进行任何转义,它们使用的底层DOM API也处理字符串,而不是HTML.
一旦你开始使用JavaScript,你几乎不需要担心HTML语法,我能想到的唯一例外是处理innerHTML
明确处理(与)HTML串行化DOM 的属性.
归档时间: |
|
查看次数: |
11391 次 |
最近记录: |