运行不受信任的代码功能

问题描述:

我没有真正列入白名单尚未使用谷歌的云功能,但我有这样的疑问:运行不受信任的代码功能

  • HTTP功能有我的谷歌云计算背景下访问?

我不想运行不受信任的javascript代码,所以我想用一个函数作为沙箱,用户只需运行简单的javascripts即可。

+0

在Cloud Functions中处理HTTP请求的所有Javascript代码都在[导出的函数](https://cloud.google.com/functions/docs/writing/http)中运行。为了在你的HTTP函数中运行用户的JS代码,你需要像request body那样将代码传递给服务器,并使用非常不安全的'eval'来解析HTTP函数。你能提供一个你想从你的HTTP函数运行的用户JS代码的例子吗? Google云环境的含义是什么? – Nicholas

+0

将是一个像“codepen”或“jsfiddle”的应用程序。但在我的情况下,它评估服务器中的用户代码。如果它有恶意代码,并且导出的功能没有其他外部信息(被隔离),它将不会有问题,因为它没有任何信息可以窃取或崩溃。但是,如果我的谷歌云证书,例如,暴露给这个导出的函数,这将是一个问题..在我的实际体系结构中,我使用[node vm](https://nodejs.org/api/vm.html)来处理它.. – felipepastorelima

+0

你需要什么特定的serverside功能,客户端JS执行不提供? – Nicholas

如果我正确理解您的请求,您希望云端HTTP功能在服务器端评估用户提供的Javascript代码。通过您的描述,函数能够评估用户代码的唯一真正方法将基本上使用evalnew Function()。为了确认我提到的风险,我创建了一个云端函数,将POST请求主体传递给eval。如果没有任何依赖关系,我可以代表云计算功能发出HTTP请求,这可能非常糟糕。

鉴于最有用的云功能将"@google-cloud"作为依赖项,用户可以访问该上下文。我能够要求@google-cloud并获取该对象可访问的所有信息(应用程序凭证,应用程序信息等)。将这些信息提供给恶意用户比第一次测试要糟得多。此外,默认情况下,云功能是通过默认应用程序凭证进行身份验证的,从而获得gcloud客户端库的所有功能。

最后,在服务器上运行用户提供的代码的方式将在容器内。这实际上将用户的代码锁定到一个Linux资源中,资源和网络功能可以完全由您来管理。在Google云平台上,完成此操作的最佳方式可能是使用App Engine作为处理用户请求的前端,并使用计算引擎VM为用户代码创建和运行容器。它更复杂但不会破坏您的Google云端平台项目。

+0

只需注意:云功能很快就会具有可配置的权限,但我同意他们不适合OP的用例。只有标注可能允许发送垃圾邮件或其他恶意活动。 –