我一直在审查我可以找到的关于在javascript网页的客户端使用eval()的安全隐患的线程。
我正在实现一个网站,该网站应允许用户运行自己的代码(写在页面上),并在同一页面上的另一个div上查看一些可视化结果。
基本上,我希望用户能够编写有效的JavaScript代码,并让它在同一页面上操作画布。
无需对代码进行服务器端评估。
我已经看过Jailed和Caja,但我认为它们可能会增加不需要的额外复杂性。
我理解正确的做这种事情的方式是在一个“沙盒”中,它无法访问我的其余代码库,但是,我的需求是我无法实际定义的一个提供安全进入/退出点的简单API ...我希望用户能够使用任何JavaScript代码,我不想写一个提供API的解释器。
鉴于不需要服务器端评估,并且只有一个用户在Web会话中执行自己的代码,使用eval()是否安全?
答案 0 :(得分:4)
如果您的逻辑中没有允许一个人发布其他人使用的代码的路径,那么您可以按原样使用eval()
。
您的情况与任何拥有浏览器和开发工具的用户无关,他/她可以运行他们想要的任何代码。