我希望能够让用户提交任意JavaScript代码,然后将其发送到 node .JS服务器,并在将输出发送回多个客户端(作为JSON)之前安全执行.我想到了eval函数,但我知道这有多个安全问题(用户提交的代码将能够访问 node 的文件API等).我见过一些项目,比如Microsoft Web Sandbox和Google Caja,它们允许执行经过消毒的标记和脚本(用于在网站上嵌入第三方广告),但这些似乎是客户端工具,我不确定它们是否可以在Node中安全使用.

是否有一种标准方法可以在 node 中沙箱和执行不受信任的JavaScript,从而获得输出.try 在服务器端执行此操作是错误的吗?

EDIT:用户是否能够充分利用JavaScript的功能并不重要,事实上,最好能够 Select 向用户代码提供哪些API.

EDIT:我将继续更新我的发现.这个Sandcastle模块(bcoe/sandcastle)似乎旨在实现我的 idea .不知道它有多安全,但既然我觉得这不是为了什么太重要的事,我想我会试试的.如果我能成功地做到这一点,我将添加我自己的答案.

推荐答案

This answer is outdated as gf3 does not provide protection against sandbox breaking

http://gf3.github.io/sandbox/——它使用require('child_process')而不是require('vm').

Node.js相关问答推荐

try 使用Puppeteer抓取Twitter时数组空

模块';"; node :流程&没有导出的成员';dlopen';

下一个API路由如何处理多个并发请求?

使用 Google Drive API 按文件夹 ID 检索文件夹的内容

yarn 安装失败,因为 node-gyp 正在寻找过时的 node 版本标头

将代码转换为 ES6 Discord.js 的问题

加速 sequelize ORM 中的查询

为什么 $or 在带有正则表达式的mongoose 中不能正常工作

node Axios 创建全局令牌变量以在单独的变量头中使用

在安装 tensorflow 时遇到问题

如何在 mongoDB 中进行全动态搜索?

node.js 是否支持yields ?

构建 vue cli 后如何运行生产站点

Base64 编码一个 javascript 对象

我可以在 Heroku 中运行咖啡脚本吗?

Puppeteer 记录在 page.evaluate

如何使用 cookie 创建 HTTP 客户端请求?

使用 node.js 循环 JSON

node.js 示例

CORS 错误:预检响应中的 Access-Control-Allow-Headers 不允许请求标头字段授权