【发布时间】:2012-06-23 13:29:58
【问题描述】:
例子:
if($('#' + untrusted_js_code).length) > 0
....`
通常,“untrusted_js_code”应该是一个简单的字符串,表示项目的 ID。变量的值来自 iframe(通过 postMessage),这就是它不受信任的原因。我只是检查该项目是否存在于当前页面中,然后才对其进行处理。
【问题讨论】:
-
如果
untrusted_js_code等于例如,最大可能会导致语法错误。"[some thing]". -
为什么在这样的位置使用不受信任的输入?无论如何,如果你想 100% 安全使用
document.getElementById()而不是像$()那样强大的库函数 -
@ThiefMaster 我查看了 jQuery 的源代码,据我所知,选择器实际上应该是安全的(无论如何我都看不到任何 eval)
-
是的,但是如果你能设法让函数运行它的 create a DOM element 部分而不是 find elements by selector 部分你可以创建例如带有 onload 脚本的图像。
标签: javascript jquery