评估服务器js文件的危险



对于以异步方式从我的服务器加载外部js文件,而不是等待它们通过包含在html头部或正文末尾来加载,我使用jquery.get()将这些js文件作为字符串检索,使用eval()转换为对象并将其分配给全局变量作为属性,即(伪代码):

var globalNameSpace = {};
var data = jquery.get('url/foo.js');           // foo.js returns a function with code
globalNameSpace[foo] = eval(data);
// from here onwards, access code in foo.js as:
globalNameSpace.foo.property;
globalNameSpace.foo.method();

这也意味着我可以显示带有加载条等的html页面。

问题是,所有的炒作eval()是危险的与不受控制的输入,看到这只是加载"受控"(虽然可能有bug: p)脚本从我自己的服务器(ajax相同的域策略等),这是如何比简单地包括js文件与标签更危险,我错过了什么?

没有比包含JavaScript通常使用阻塞<script>标记更危险的了。

但是你应该考虑使用async属性,这在IE10, Chrome 11, Safari 5和FF 3.6中都支持,或者使用jQuery将script元素注入到你的文档中。

最新更新