我希望能够让用户提交任意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 .不知道它有多安全,但既然我觉得这不是为了什么太重要的事,我想我会试试的.如果我能成功地做到这一点,我将添加我自己的答案.