为什么 eval 在 JavaScript 之外不是一个坏主意?

问题描述 投票:0回答:0

在 JavaScript 中,

eval
认为 是一个坏主意,主要是因为它使您的代码容易受到注入攻击。引用这个评论

我们试图避免的攻击是当用户提供的值被保存时,然后被放入 javascript 和 eval'。例如,我可以将我的用户名设置为:

badHackerGuy'); doMaliciousThings();
如果你使用我的用户名,将它连接到一些脚本中并在其他人的浏览器中对其进行评估,那么我可以在他们的机器上运行我想要的任何 javascript(例如强制他们 +1我的帖子,将他们的数据发布到我的服务器等)

但是为什么这个问题仅限于 JavaScript?是的,JavaScript 是唯一在浏览器上运行的语言,但除了浏览器之外,还有其他上下文可以避免注入攻击。

(这部分与我的实际问题无关,但是人们talkabout元编程的极端,令人敬畏的力量。

eval
允许您进行元编程,听起来注入攻击问题是唯一的大缺点。为什么被认为是明确的缺点大于优点?)

javascript lisp eval metaprogramming
© www.soinside.com 2019 - 2024. All rights reserved.