gpt4 book ai didi

javascript - 是否可以通过 $() 注入(inject)恶意 javascript 代码?

转载 作者:可可西里 更新时间:2023-11-01 01:38:23 25 4
gpt4 key购买 nike

例子:

if($('#' + untrusted_js_code).length) > 0
....`

通常“untrusted_js_code”应该是表示项目 ID 的简单字符串。变量的值来自 iframe(通过 postMessage),这就是它不受信任的原因。我只是检查该项目是否存在于当前页面中,然后才对其进行操作。

最佳答案

截至 2012 年 10 月 22 日,jQuery 1.8.2:

是的,XSS 攻击是可能的。

var input = "<script>alert('hello');</script>"
$(input).appendTo("body");

See demo . jQuery 团队似乎有 acknowledged this并计划在 jQuery 1.9 中解决它。

从 jQuery 1.8 开始,如果您希望用户输入是 html,请使用 $.parseHTML:

var input = "<script>alert('hello');</script>"
$($.parseHTML(input)).appendTo("body");​

See demo ,没有警报。


然而,在 OP 描述的情况下,以下内容:

var untrusted_js_code = 'alert("moo")';
$('#' + untrusted_js_code).show();

将翻译成这样:

$('#alert("moo")').show();

这被jQuery解释为CSS选择器,得益于字符串中前面的#,相对于html不能有内联JS代码,所以相对安全。上面的代码只会告诉 jQuery 通过该 ID 查找 DOM 元素,导致 jQuery 无法找到该元素,因此不会执行任何操作。

关于javascript - 是否可以通过 $() 注入(inject)恶意 javascript 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11169894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com