JavaScript的eval函数真的是一个如此巨大的安全威胁吗?

5
假设没有浏览器端安全漏洞可以用来修改某人的计算机,我不明白如何使用 eval 可能会导致任何实际威胁。有人可以在用户的计算机上显示一些内容,但如果没有重定向或接受下载,就不会造成真正的损害。没有服务器端的损害,对吧?

1
如果你的第一个假设无法证明,那么答案有多少价值呢? - flq
1
eval()允许执行任意代码。你无法预测任意代码现在或将来可能做什么。 - Frédéric Hamidi
4个回答

3
当您放弃JavaScript的控制权时,它不仅执行可能会有害。通过Ajax,您可能会将flash对象、pdf或Java小程序加载到当前页面中。这将不会显示对话框,并且您将调用插件(其权限比浏览器本身更多)。
因此,在理论上,它可能会造成与插件本身允许的损坏一样多,而这通常是相当多的。

2

JavaScript提供了许多方法来让浏览器向服务器发送数据。它们可以被利用来发动攻击,包括拒绝服务攻击。


1
任何存储在全局可访问的 JavaScript 变量中的数据(由您的代码或第三方代码)都可以被传递给 eval 的代码使用。根据存储在其中的内容(例如用户身份验证令牌)以及系统的设计,可能会造成许多服务器端损害。

1

由于eval可能导致代码执行,除非您可以 100% 控制该代码(这非常罕见,否则您不会考虑使用eval),否则它会在您的网站上造成漏洞。

此漏洞不一定会对您的服务器产生负面影响,但它可能会严重影响您的用户,并在某些情况下允许黑客窃取您的用户cookie、访问他的会话和其他许多事情。

一个简单的例子是eval执行恶意脚本,向您的服务器发送所有必要信息来删除或更改用户数据。因为请求实际上来自您用户的会话,所以它是一个完全有效的请求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接