很好奇如果在服务器上执行这种类型的代码可能会出现什么不可预见的问题。或者是否有任何非eval
替代方案。
var a = {b:1, c:2, d:3, e:[1,2,3]};
(function(path) { return eval('this'+path) }).call(a, '.e[2]');
最佳答案
鉴于 path
是静态值 (".e[2]"
) 并且 a
没有任何恶意访问者等,除了完全没有必要之外,这里没有什么不安全的地方。
但是,如果 path
确实来自客户端或其他不受信任的来源,那么将其传递给 eval
是最糟糕的事情。它可以做 JS 代码在 Node 中可以做的所有事情 - 这足以严重伤害你。
关于javascript - 如果在服务器(nodeJS)上运行,此 JavaScript 代码的安全性如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30580764/