评估与Web控制台

时间:2018-08-29 04:46:51

标签: javascript eval

如果您评估用户生成的代码,我总是会听到并阅读“ Eval是邪恶的”。

但是与在Web控制台中输入代码有何不同?还有什么选择?

我知道网络上充斥着像我这样的问题。但是对不起,我无法理解所读内容。如果您能帮助我,那就太好了。我记得我读过一些有关范围的文章,所以eval()和Web控制台是否有其他范围?如果是,为什么这会使Web控制台更安全?

感谢您的建议!
达斯·月亮

编辑:为什么通过Web控制台/通过eval传递代码根本很危险?虽然我会在客户端执行js吗?

1 个答案:

答案 0 :(得分:1)

在其中执行代码都不安全;两者都可能导致XSS攻击。
在这方面,Web控制台与已评估的代码一样容易受到攻击。

但是,它们的确有不同的作用域。

eval() 在全局范围或局部范围内起作用,具体取决于调用方式:

  

从ECMAScript 5开始,如果通过除eval以外的引用调用eval函数来间接使用eval函数,则它将在全局范围而不是局部范围内工作。例如,这意味着函数声明创建了全局函数,并且被评估的代码无法访问被调用范围内的局部变量。

然后Web控制台在页面窗口范围内执行代码。

值得注意的是,浏览器控制台 has a different scope Web控制台,该浏览器在浏览器的chrome窗口下运行:

  

类似地,您可以使用浏览器控制台执行JavaScript表达式。但是,尽管Web控制台在页面窗口范围内执行代码,但浏览器控制台在浏览器的chrome窗口范围内执行代码。