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

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

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

编辑(更多信息):

  • Regex 不是一个选项,因为他们需要 ifelseswitch
  • 我想避免创建自定义语言
  • 想法是,如果用户了解 JS,他们就可以编写自定义逻辑

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

最佳答案

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

关于javascript - 允许在客户端上编写的 JavaScript 在服务器上执行的最安全方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52755267/

相关文章:

javascript - 无法访问 Angular 应用程序注入(inject)的 div 元素

javascript - 获取元素指令的html结构(或模板)

javascript - node.js 模块导出

android - jpm-mobile 失败并出现 ReferenceError : cmd is not defined

clang - 如何让 clang 转储没有颜色的 AST?

javascript - 表单上的 AJAX 引用错误

javascript - 如何构造svg变换矩阵

javascript - 无法以编程方式连接到 mysql 服务器

c++ - Clang AST 访问者,避免遍历包含文件

python - 为什么 Python 将 None 插入到切片步骤中?