Javascript /我的dynamicfunction是否安全?

可能重复:
如何在node.js沙箱中安全地运行用户提交的脚本?

我希望我的用户可以创build自己的格式函数,使用特定的对象。 我find了两种方法,但是我不知道这个function是否可以被黑客入侵。 它在nodeJS中运行。

//First way with eval (evil ?) function convertObj(formula) { return function (obj) { return eval(formula); }; } // Second way with function (same as eval ?) function convertObj2(formula) { return new Function("obj", "return " + formula); } var inst = { "name": "BOB", "age": "30" }; var formula = "obj.name.toLowerCase() + ' is ' + obj.age + ' years old'"; var next = convertObj(formula); var next2 = convertObj2(formula); document.write('<p>' + next(inst) + '</p>'); document.write('<p>' + next2(inst) + '</p>');​ 

打印

 bob is 30 years old bob is 30 years old 

该示例也可在http://jsfiddle.net/DeWYy/2/

两者都是脆弱的,因为你真的让任何人无法控制任何东西。

你可能想要做的是在沙箱里面运行代码。 有图书馆,将帮助你( 沙盒快速谷歌search)。 请注意,即使您在沙箱中运行用户提交的代码,也总会存在风险,但大部分都会被缓解。 所以除非你运行一个关键的服务,否则可以认为是安全的。

我也build议你看看这个问题安全地运行用户提交的代码。

  • 如何在node.js沙箱中安全地运行用户提交的脚本?