JS eval安全问题

JS eval security issue

本文关键字:问题 安全 eval JS      更新时间:2023-09-26

每个人都说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中键入的代码似乎有点奇怪,但只要你对三件事满意,那就好了。这三件事是:

  1. eval将执行输入中的任何代码。既然用户把它放在那里,那么很有可能是好的(至少,这是一个"用户注意"的情况)。

  2. eval启动一个完整的JavaScript解析器。现在,在现代浏览器上,这比眨眼还快,所以…

  3. eval将在调用它的上下文中执行你给它的代码,这使它甚至可以访问该上下文中的本地变量。

"eval是邪恶的"咒语与不必要地使用eval有关,因为人们有时会这样做(例如,您看到eval("obj." + nameOfProperty)),并将其用于您无法控制的内容。