【发布时间】:2015-06-01 18:37:12
【问题描述】:
很好奇如果在服务器上执行这种类型的代码可能会出现什么不可预见的问题。或者如果有任何非eval 替代品。
var a = {b:1, c:2, d:3, e:[1,2,3]};
(function(path) { return eval('this'+path) }).call(a, '.e[2]');
【问题讨论】:
-
path来自哪里?此外,return this[path]有效 -
path来自客户端的参数。 -
你确定
this[path]有效吗? -
那么它非常危险、缓慢且不需要,只需使用显示的数组语法即可。
-
不要玩猫捉老鼠的游戏。帮自己一个忙,只需摆脱 eval 并使用 resolve()。查找如何通过字符串访问对象属性,已经得到了很多回答。神速。
标签: javascript node.js security eval code-injection