如果在服务器(nodeJS)上运行,这个JavaScript代码有多安全或不安全?

时间:2015-06-01 18:37:13

标签: javascript node.js security eval code-injection

如果在服务器上执行此类代码可能出现的无法预料的问题,那就很好奇。或者,如果有任何非eval替代品。

var a = {b:1, c:2, d:3, e:[1,2,3]};
(function(path) { return eval('this'+path) }).call(a, '.e[2]');

1 个答案:

答案 0 :(得分:1)

鉴于path是一个静态值(".e[2]")而a没有任何恶意访问者,所以这里没有任何不安全因素,除非它完全没必要。

但是,如果path确实来自客户端或其他不受信任的来源,那么将其传递给eval是您可以做的最糟糕的事情。它可以完成JS代码在节点中可以做的所有事情 - 这足以严重伤害你。

是的,有tons of non-eval alternatives