如何安全地评估用户编写的Javascript

时间:2017-07-15 20:04:39

标签: javascript ace-editor

好的,所以我正在制作一款可以教人们如何编码的应用。我想我会使用'Ace Editor'来允许用户编写javascript。

我需要能够运行用户编写的这个javascript,并将结果返回给它们。如果他们写错了,或者其他任何事情......这可能是一个错误。

我已经对如何在浏览器中运行javascript进行了一些研究,并发现eval()是一种val方式。我知道我应该使用沙盒'但我不确定我是否完全理解这是什么,并且绝对不懂如何制作。

因此,我的问题是如何在浏览器中安全地运行用户的javascript并将结果返回给他们。

(这是我的第一篇文章,我对这一切都很陌生,所以我真的不知道自己在做什么)

1 个答案:

答案 0 :(得分:0)

用户编写的代码只能在浏览器中运行,因此他们很可能无意中造成任何外部伤害。可能发生的最糟糕的事情是他们可以写一个无限循环或类似的东西,这会冻结他们的浏览器一段时间,但现代浏览器有机制从中恢复。

eval()被认为是不安全的,因为它可能运行来自其他用户的恶意代码,但在这种情况下使用它是安全的,因为评估的代码不会来自外部源。