我找到了一些答案,但是答案很旧,我想知道如何解决?
我已经看到eval()
功能不安全:
Alternate for eval() to execute auto-generated JS code from the server
那么,为了以隔离的安全方式运行javascript代码,我有什么选择?
(如前所述,这个答案已经过时,所提出的解决方案很容易被打破)。
当前,secure ecmascript的草案尚未被批准/实施。具有不错的浏览器支持(代理是es6功能)的一种黑客正在使用proxies
和with
创建沙箱。
您只需要编写一个代理,它为每个请求的键返回null,除了某些安全功能。with
每当需要eval之外的变量时(例如window),都将询问代理,因此,请提供null而不是真实的var。
查看此网站的教程:code sandbox