2016-03-02 61 views
2

我们正在研究一个功能,我们需要让用户编写一个小R脚本来计算某些数据。执行不可信的RDotNet代码

脚本应该是非常简单的,如:

var1 + var2 - var3 

var1 + sum(var2) 

然而,R可以做的远不止此,我们不希望任何人在我们的服务器上执行的东西。

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

所以我们需要找到一些更有创意的方式来“保护”服务器。

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

我的问题是:你会怎么做? (前提是应用程序域是不是一种选择)

+0

不知道这是否是评论或答案,我会坚持应用程序域,但通过不同的方式:您可能会尝试在不同的应用程序域内运行您的应用程序。在这种情况下,R.net和R仍将用于单个域。如果我没有弄错,R进程本身会自动在与其父进程相同的域中启动。进程间通信可以通过MCF命名管道来实现。 –

回答

0

就如关闭标记这个问题的缘故,这里是我们所做的事情:

我们结束了使用Rserve

这是托管在一台无法做任何事情的机器上,然后在机器/用户级别而不是在此过程中管理安全性。