每个人都说 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”的任何代码。
假设这就是你的意思:
执行某人在输入
中键入的代码似乎有点奇怪,但只要您满足三件事,那就没问题。这三件事是:
eval
将执行该输入中的任何代码。既然用户把它放在那里,那么可能性就很大了(至少是“用户小心”的情况)。eval
启动完整的 JavaScript 解析器。现在,在现代浏览器上,发生的速度比眨眼还快,所以...eval
将执行您在调用它的上下文中提供的代码,这使得它甚至可以访问该上下文中的本地变量.
“eval
是邪恶的”口头禅与不必要地使用 eval
相关,正如人们有时所做的那样(您会看到 eval("obj."+ nameOfProperty)
例如),并将其用于您无法控制的内容。
关于javascript - JS eval 安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15701988/