允许在客户端上编写JavaScript并在服务器上执行的最安全方法是什么?

时间:2018-10-11 08:11:54

标签: javascript node.js abstract-syntax-tree esprima escodegen

我想允许我们的用户用JavaScript编写字符串解析逻辑,然后在服务器上执行。

编辑(更多信息)

  • 不能使用正则表达式,因为他们将需要ifelseswitch
  • 我想避免创建自定义语言
  • 这个想法是,如果用户知道JS他们可以编写自定义逻辑

我看过CodePen的Stopping Infinite Loops,他们使用Abstract Syntax Tree生成了Esprima,然后重新生成了我们使用Escodegen的JavaScript。这种方法让我担心的是,仍然有人会引入某种Unicode hack。

2 个答案:

答案 0 :(得分:1)

最安全的方法是为javascript(或任何其他脚本语言)或您自己的域特定lang的某些子集创建自己的解析器/解释器。这是很多工作,但是比在服务器上维护一个沙盒式javascript VM并与其进行通信要容易得多,并且更加安全。

答案 1 :(得分:0)

一个想法:

  1. 用户在网页上编写其自定义功能

  2. 网页从服务器获取数据

  3. 自定义功能应用于客户端数据

  4. 结果发送回服务器(确保结果不受影响)