3
我一直在评论我可以找到关于在JavaScript网页的客户端使用eval()的安全含义的线程。客户端用于运行不可信代码的JavaScript eval()
我正在实现一个网站,该网站应该允许用户运行他们自己的代码(写在页面上)并在同一页上的另一个div上看到一些可视结果。基本上,我希望用户能够编写有效的JavaScript代码,并让它在同一页面上操作画布。
没有必要对代码进行服务器端评估。
我曾看过Jailed和Caja,但我认为他们可能会增加不需要的额外复杂度。
我明白,做这类事情的权方式是在有我的代码库的其他部分没有访问权限的“沙箱”,然而,我的需求是这样的,我不能真正定义一个简单的API提供安全的入口/出口点...我希望用户能够使用任何JavaScript代码,我不想写一个将提供API的解释器。
由于不需要服务器端评估,并且应该只有一个用户在Web会话中执行自己的代码,使用eval()是否安全?
除非该代码与其他用户共享,这可能导致cookie被窃取或其他一些不良行为,我认为它可能是安全的,或者至少它可能会损害用户会话 – alex88
您的eval方法与jsfiddle.net一样安全,但在跨浏览器方式中捕获抛出的错误(js的异常版本)时会遇到问题,并显示导致错误的行。不是为了安全性,但是对于捕获的错误问题,您可能需要考虑创建脚本标记或iframe并在其中执行代码,但是......这不是您所问的:p – hanshenrik