我想允许我们的用户用JavaScript编写字符串解析逻辑,然后在服务器上执行。
编辑(更多信息):
if
,else
,switch
等我看过CodePen的Stopping Infinite Loops,他们使用Abstract Syntax Tree生成了Esprima,然后重新生成了我们使用Escodegen的JavaScript。这种方法让我担心的是,仍然有人会引入某种Unicode hack。
答案 0 :(得分:1)
最安全的方法是为javascript(或任何其他脚本语言)或您自己的域特定lang的某些子集创建自己的解析器/解释器。这是很多工作,但是比在服务器上维护一个沙盒式javascript VM并与其进行通信要容易得多,并且更加安全。
答案 1 :(得分:0)
一个想法:
用户在网页上编写其自定义功能
网页从服务器获取数据
自定义功能应用于客户端数据
结果发送回服务器(确保结果不受影响)