将插件加载到Web应用程序的安全/可靠方式

5 javascript browser google-chrome-extension web

我有一个接受JS插件的Web应用程序.也就是说,其他人写的用户希望加载到我的应用程序中的JavaScript代码.

目前我正在使用eval()来评估他们的JS代码到运行时,但我知道这不安全.这样做有比eval()更好的方法吗?

为了清楚起见,用户正在指向一个干文本文件(URL),文件中的JS需要以某种方式生效.

我知道动态导入JS脚本的方法只有两种:

  1. 使用AJAX,获取JS代码,然后在其上运行eval().
  2. 动态地将<script>标签添加到DOM

问题的目的是弄清楚一个人是否比另一个人更安全,或者是否有比上述两个选项更好的方法.

Ber*_*rgi 4

这两者中的一个比另一个更安全吗?

不,从安全角度来看,它们同样不好(好)。

它们在细节上有所不同,这将导致采用不同的方法来使它们更安全,但最终两者都会在您的环境中运行由不受信任的第三方编写的代码,并拥有其所有特权。这基本上是一个持续存在的 XSS问题。

还有比上述两种选择更好的方法吗?

许多。这主要取决于这些插件应该在您的应用程序中做什么、谁编写它们以及谁安装(启用)它们。作为应用程序提供商和用户,您都不希望任意代码对用户的数据造成严重破坏。如果插件需要访问数据,您需要采取管理措施来确保只有受信任的代码才会运行,例如插件代码审核。至少您需要通知您的用户,他们在启用插件之前必须信任插件作者,这会给他们带来负担。此外,您还应该确保拥有可用的日志,以防出现问题。

如果您确实想运行任意、不受信任的代码而不授予其访问用户数据的权限,那么您将需要考虑沙箱。有多种方法本质上是在代码无法脱离的虚拟机中执行。