客户端上用于运行不受信任代码的JavaScript eval()

JavaScript eval() on client-side for running untrusted code

本文关键字:JavaScript eval 代码 信任 用于 运行 客户端      更新时间:2023-09-26

我一直在研究在javascript网页的客户端上使用eval()的安全性影响。

我正在实现一个网站,它应该允许用户运行自己的代码(写在页面上),并在同一页面上的另一个div上看到一些可视化结果。

从本质上讲,我希望用户能够编写有效的JavaScript代码,并让它在同一页面上操作画布。

不需要对代码进行服务器端评估。

我看过Jailed和Caja,但我认为它们可能会增加不需要的额外复杂性。

我知道做这类事情的正确方式是在"沙盒"中,无法访问我的代码库的其余部分,然而,我的需求是,我实际上无法定义一个简单的API来提供安全的入口/出口点。。。我希望用户能够使用任何JavaScript代码,我不想写一个解释器来提供API。

假设不需要服务器端评估,并且在web会话中应该只有一个用户执行自己的代码,那么使用eval()安全吗?

如果您的逻辑中没有允许一个人发布代码供其他人使用的路径,那么您可以按原样使用eval()

您的情况与任何拥有浏览器和开发工具的用户没有什么不同,在这些工具中,他/她可以运行他们想要的任何代码。