Javascript 涉及不同域的级联注入
Javascript cascade injection involving distinct domains
简单地说:
外部 Javascript 代码能否在页面 DOM 中注入托管在第三个不同域上的另一个脚本?
例如:
给定 foo.com 网站,有一个 html 脚本标签,其 src 设置为 http://bar.xyz/script.js
.
script.js
可以注入 http://qux.net/abc.js
(托管在 qux.com) 吗?
http://foo.com/
<script src="http://bar.xyz/script.js"></script>
// Content of bar.xyz/script.js:
!(function(){
var k = document.createElement('script')
, s = document.getElementsByTagName('script')[0];
k.type='text/javascript'; k.async=true;
k.src = document.location.protocol+'//qux.net/abc.js';
s.parentNode.insertBefore(k,s);
//…
})();
我无法让 abc.js 被注入并且没有 error/alert 接缝弹出到控制台。
这里是否适用任何安全限制政策?
我仍在寻找讨论这个的文章或 SO 线程......
谢谢。
是;一旦 Javascript 代码在您的源中 运行,它就与您自己的代码完全没有区别,并且可以做任何您能做的事情。
简单地说:
外部 Javascript 代码能否在页面 DOM 中注入托管在第三个不同域上的另一个脚本?
例如:
给定 foo.com 网站,有一个 html 脚本标签,其 src 设置为 http://bar.xyz/script.js
.
script.js
可以注入 http://qux.net/abc.js
(托管在 qux.com) 吗?
http://foo.com/
<script src="http://bar.xyz/script.js"></script>
// Content of bar.xyz/script.js:
!(function(){
var k = document.createElement('script')
, s = document.getElementsByTagName('script')[0];
k.type='text/javascript'; k.async=true;
k.src = document.location.protocol+'//qux.net/abc.js';
s.parentNode.insertBefore(k,s);
//…
})();
我无法让 abc.js 被注入并且没有 error/alert 接缝弹出到控制台。
这里是否适用任何安全限制政策?
我仍在寻找讨论这个的文章或 SO 线程......
谢谢。
是;一旦 Javascript 代码在您的源中 运行,它就与您自己的代码完全没有区别,并且可以做任何您能做的事情。