0

每个人都说 JS 中的 eval() 函数很糟糕。

实际上我是这样使用它的:

eval("document.getElementById('toto').value");

在我看来,即使用户在“toto”元素中发送恶意输入,这也是安全的。

你能确认一下吗?(我不想让我的应用程序存在漏洞)。

4

1 回答 1

2

首先,正如 Juhana 在评论中指出的那样:

eval("document.getElementById('toto').value");

只是不必要的使用eval,它等同于

document.getElementById('toto').value;

现在,没有引号:

eval(document.getElementById('toto').value);

...它将评估“toto”中input的任何代码。id

假设这就是你的意思:

执行某人输入的代码似乎有点奇怪input,但只要你对三件事没问题,那很好。这三件事是:

  1. eval将执行该输入中的任何代码。既然用户把它放在那里,赔率是相当不错的(至少,这是一个“用户当心”的情况)。

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

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

eval是邪恶的”口头禅与eval不必要的使用有关,就像人们有时会做的那样(例如你看到eval("obj." + nameOfProperty)的),以及在你无法控制的内容上使用它。

于 2013-03-29T11:06:47.653 回答