Pure Javascript Sandbox
Pure Javascript Sandbox
这是纯javascript沙盒的可能解决方案吗?我愿意执行一个不受信任的代码字符串,而不允许访问DOM、window、this等,但允许用户访问Math、JSON和其他功能。我已经在Chrome上测试过了。
更新:我想提供在服务器上保存用户定义代码的可能性,并使其对其他用户可用。我正在寻找一种方法来拒绝访问该文件,以确保其安全。
function safe(code,args)
{
if (!args)
args=[];
return (function(){
for (i in window)
eval("var "+i+";");
return function(){return eval(code);}.apply(0,args);
})();
}
ff=function()
{
return 3.14;
}
console.log(safe("this;"));//Number
console.log(safe("window;"));//undefined
console.log(safe("console;"));//undefined
console.log(safe("Math;"));//MathConstructor
console.log(safe("JSON;"));//JSON
console.log(safe("Element;"));//undefined
console.log(safe("document;"));//undefined
console.log(safe("Math.cos(arguments[0]);",[3.14]));//-0.9999987317275395
console.log(safe("arguments[0]();",[ff]));//3.14
我在一个旧帖子上提出了这个建议:https://stackoverflow.com/a/11513690/76081
谢谢!
这是不安全的。以下构造将从沙箱中获取全局window
对象:
(function(){return this;})()
在这一点上,你可以从中提取任何你想要的东西,包括像document
这样的好东西。
T.J.Crowder在https://stackoverflow.com/a/2673780/149341他在信中描述了这种利用。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 使用php或javascript从facebook相册URL中删除多余的部分
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在JavaScript中将字符串转换为函数引用
- 模糊事件的Javascript测试
- Javascript更改图标
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何使用WCF服务和javascript表单post上传.doc文件
- javascript结合了数组和字典
- 这是什么 ==- javascript 运算符
- 从javascript创建一个列表
- 无法在通过jQuery的ajax加载的页面中执行javascript
- Javascript:selenium Web驱动程序isDisplayed()不工作
- Pure Javascript Sandbox
- javascript sandbox 一个模块,用于防止引用 Window
- 很好的实现了可扩展的JavaScript应用架构(Sandbox by Nicholas Zakas)
- API explorer/playground/sandbox用于用Javascript编写的自定义API
- Zendesk Javascript可以在Sandbox中工作,但不能在实际的Zendesk中工作