我意识到这听起来有点疯狂,但我正在研究一个项目,我需要一个服务器来运行用户提供的Ruby代码并返回结果.
我想阻止这样的事情:
system("rm -rf /")
eval("something_evil")
# etc...
Run Code Online (Sandbox Code Playgroud)
我确信必须有一些合理安全的方法,因为它已经存在于tryruby.org这样的地方.非常感谢任何帮助,谢谢!
三点建议:
1)看看Ruby 污点水平.这提供了一定程度的保护,eval('evil_code')类型的东西等.
2)除非用户实际需要访问本地文件系统,否则请使用类似fakefs的内容
3)无论你做了什么,都遵循Tronic的建议(可能很难设置,但有限的chroot jails是确保用户无法访问你没有明确要求的资源的唯一方法).