我有一个允许用户执行自己的ruby脚本的服务器应用程序。运行脚本的服务器是Amazon EC2上的虚拟实例,因此不会造成永久性损坏。但是,我想采取一切可能的预防措施来阻止任何危险/恶意脚本,重启仍然是我想避免的。
目前我不允许任何包含“require”或“include”的脚本。我认为允许“包含”实际上是安全的吗?没有任何用户访问服务器的文件系统,所以如果我不允许任何字符串“文件”出现。会阻止用户访问服务器的文件系统吗?
答案 0 :(得分:2)
听起来像是在猜猜游戏。作为具有极低权限的用户运行脚本会不会更容易? 或者你可以看看TryRuby如何解决类似的问题。
似乎sandboxing Ruby有几个选项,但我没有使用any,所以我无法发出recommendations。
答案 1 :(得分:2)
不允许出现字符串“文件”对您没有任何帮助。他们仍然有eval,pack / unpack,Dir,以及其他很多东西。
YMMV,但这就是我要做的事情:
可能仍然不安全,但这是一个开始。
编辑:使用ulimit或等效设置限制系统资源消耗也是一个好主意。