每个人都说JS中的eval()函数是坏的
实际上我是这样用的:
eval("document.getElementById('toto').value");
在我看来,即使用户在"toto"元素中发送恶意输入,这也是安全的。
你能确认一下吗?(我不想让漏洞在我的应用程序)。
首先,正如Juhana在评论中指出的那样:
eval("document.getElementById('toto').value");
只是对eval
的不必要的使用,它等于
document.getElementById('toto').value;
现在,不带引号:
eval(document.getElementById('toto').value);
…它将计算input
中带有id
"toto"的任何代码。
假设你是这个意思:
执行某人在input
中键入的代码似乎有点奇怪,但只要你对三件事满意,那就好了。这三件事是:
eval
将执行输入中的任何代码。既然用户把它放在那里,那么很有可能是好的(至少,这是一个"用户注意"的情况)。eval
启动一个完整的JavaScript解析器。现在,在现代浏览器上,这比眨眼还快,所以…eval
将在调用它的上下文中执行你给它的代码,这使它甚至可以访问该上下文中的本地变量。
"eval
是邪恶的"咒语与不必要地使用eval
有关,因为人们有时会这样做(例如,您看到eval("obj." + nameOfProperty)
),并将其用于您无法控制的内容。