Javascript 为什么eval()不安全;现代浏览器上的用户不会运行任何对其进行评估的内容吗?

Javascript 为什么eval()不安全;现代浏览器上的用户不会运行任何对其进行评估的内容吗?,javascript,eval,Javascript,Eval,我读到了eval()的安全含义,但是有一点我不明白。想象一下最坏的情况,eval()正在编译一个输入框。黑客可以在上面键入任何内容,然后它就会运行,但在现代浏览器中,例如:Chrome,他不能在控制台上执行完全相同的操作吗?当然,但用户的目标不是窃取自己的数据 危险在于其他人成功地将恶意代码带到了他知道用户页面上会发生评估的地方 利用这种问题进行的攻击称为 另一个类似的安全问题是直接附加可能包含脚本标记的HTML。例如,如果您在实现论坛时这样做,并且允许用户不受任何限制地编写HTML,他们可以在

我读到了eval()的安全含义,但是有一点我不明白。想象一下最坏的情况,eval()正在编译一个输入框。黑客可以在上面键入任何内容,然后它就会运行,但在现代浏览器中,例如:Chrome,他不能在控制台上执行完全相同的操作吗?

当然,但用户的目标不是窃取自己的数据

危险在于其他人成功地将恶意代码带到了他知道用户页面上会发生评估的地方

利用这种问题进行的攻击称为


另一个类似的安全问题是直接附加可能包含脚本标记的HTML。例如,如果您在实现论坛时这样做,并且允许用户不受任何限制地编写HTML,他们可以在其他用户的页面中执行脚本标记。

关于某人执行
eval(来自ajax请求的内容)
?不是用户,而是其他人可以使用它。如果要评估的数据可以编码到URL中,则攻击者可以检索cookie或重定向用户的浏览器。通常,您可以使用更好的解决方案来替换
eval
eval
使用
框可能是有意的,也可能是糟糕的样式,但决不会有安全风险。最坏的情况是
eval(location.hash)
。谢谢,很好的例子。此外,即使是最缺乏经验的黑客也很容易发现和利用评估失误。我会尽量避免的。