执行不受信任的 RDotNet 代码

Executing untrusted RDotNet code

我们正在开发一项功能,我们需要让用户编写一个小的 R 脚本来计算一些数据。

脚本应该非常简单,例如:

var1 + var2 - var3

var1 + sum(var2)

然而,R 的功能远不止于此,我们不希望任何人在我们的服务器上执行任何操作。

我们已经尝试使用不同的 AppDomain,但是这个 link 似乎表明它仍然不受支持。

所以我们需要找到一些更有创意的方式来 "secure" 服务器。

我们想到的一个选择是创建某种允许功能的字典并预解析脚本以查找不允许的内容。

我的问题是:你会怎么做? (前提是 AppDomain 不是一个选项)

为了将此问题标记为已关闭,我们做了以下操作:

我们最终使用了 Rserve

这是托管在一台不能做任何事情的机器上,然后在 machine/user 级别而不是在进程中管理安全性。