是否可以限制JRuby的功能?

时间:2014-04-12 07:06:20

标签: ruby jruby

假设我有一个使用JRuby的Java程序,允许用户使用Ruby脚本来控制窗口中某些有趣角色的行为。

用户可以与社区分享他们的Ruby代码,因此其他人可以在他们自己的程序副本上执行代码片段并看到有趣的角色做的事情。

我对此有安全担忧,因为用户可能会向社区提供恶意Ruby代码。

显而易见的预防措施是用户不应该运行不受信任的用户的代码段。但是,由于社区的性质,点 来检查陌生人的创作。

所以,我想到也许我可以限制JRuby的功能。

可能还有其他一些事情,但我的一些限制是:

  • 不允许任何形式的网络。
  • 无法访问文件系统。
  • 不允许系统DOS调用。
  • 无法导入/导入ruby code / gems / etc.
  • 无法创建新流程等。

是否有合理的方法来限制JRuby功能?

我想过,或许会重新定义这种操作所需的几个常量。例如,

File = nil

但我不确定哪些常数完全无效,以及这是否有效。

1 个答案:

答案 0 :(得分:0)

由于您的要求是具体的,您可能需要自己实施这些限制......一些指示:

  • ruby​​gems可以在JRuby中禁用 - 假设你可以用这种方式启动,否则chaing load/require是一个不错的选择
  • system相同,以及创建新流程的类似调用
  • 而不是尽早执行File = nil您最终可能需要逐个审核文件/ IO方法
  • 取消定义Java常量和java方法以禁止使用Java API进行智能作弊