我实际上还没有被列入使用谷歌云功能的白名单,但我有这个问题:
- http函数可以访问我的谷歌云上下文吗?
我不想运行不受信任的 javascript 代码,所以我想使用一个函数作为沙箱,用户可以在其中运行简单的 javascripts。
我实际上还没有被列入使用谷歌云功能的白名单,但我有这个问题:
我不想运行不受信任的 javascript 代码,所以我想使用一个函数作为沙箱,用户可以在其中运行简单的 javascripts。
如果我正确理解您的请求,您希望 Cloud HTTP Functions 在服务器端评估用户提供的 Javascript 代码。
根据您的描述,该函数能够评估用户代码的唯一真正方法基本上是使用eval
or new Function()
。为了确认我提到的风险,我创建了一个简单地将 POST 请求正文传递给eval
. 如果没有任何依赖关系,我可以代表云功能发出 HTTP 请求,这可能很糟糕。
鉴于大多数有用的云功能将"@google-cloud"
作为依赖项,用户可以访问该上下文。我能够要求@google-cloud
并获取该对象可访问的所有信息(应用程序凭据、应用程序信息等)。向恶意用户提供此类信息比第一次测试要糟糕得多。此外,Cloud Functions 默认经过身份验证,大概是默认应用程序凭据,因此获得了 gcloud 客户端库的所有功能。
最后,在服务器上运行用户提供的代码最安全的方法是在容器中。这实际上会将用户的代码锁定在一个 Linux 盒子中,其中的资源和网络功能可以完全由您管理。在 Google Cloud Platform 上,实现此目的的最佳方法可能是使用 App Engine 作为前端来处理用户请求,并使用 Compute Engine 虚拟机为用户代码创建和运行容器。它更复杂,但不会冒破坏您的 Google Cloud Platform 项目的风险。