我正在运行一些看起来像这样的代码:
result = system("ruby " + filename_random_ruby_script)
if result
save_to_disk(random_ruby_script)
else
# Do Nothing
end
变量“random_ruby_script”表示任何 .rb 文件。
此代码是对 system() 的许多调用中的第一个,并运行一个 ruby 文件,该文件可能还包含对 system() 的调用、磁盘读/写、HTTP 请求等。
必须运行 ruby 文件才能了解它的作用,但它可能会尝试读取/写入/执行除自身以外的其他内容,我不希望它删除我的硬盘或发布淫秽的推文。
我想创建一个空间,让这个程序可以在没有权限的情况下运行,在它的父目录中写入/执行任何东西,但可以通过任何网络协议(protocol)在本地读取任何东西。
我还想知道它是否尝试在本地或网络上编写/执行任何内容。
可能有一个 gem 或软件可以做类似的事情,但我对沙盒代码非常陌生,所以几乎任何建议都会有所帮助。
最佳答案
使用安全级别,不要用系统运行脚本
http://ruby-doc.org/docs/ProgrammingRuby/html/taint.html
例如,这在旧的 github gem 构建器中使用(gemspecs 是正常的可执行 ruby 代码)。
关于ruby - 如何在不删除对外部 API 的访问的情况下为 ruby 设置虚拟环境或沙箱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3077260/