ruby - 如何在不删除对外部 API 的访问的情况下为 ruby​​ 设置虚拟环境或沙箱?

标签 ruby permissions metaprogramming virtual sandbox

我正在运行一些看起来像这样的代码:

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/

相关文章:

ruby-on-rails - 如何通过数组通过关系通过 has_one 查找所有记录

ruby - JRuby "no such file to load"

c++ - 发射信号和槽的信息和控制(Qt)

ruby-on-rails - 对 SQL 的 Activerecord 查询

ruby - 当参数需要资源引用时如何对 Puppet 类进行 rspec 测试

macos - 如何在 OS X Mavericks 上控制 apache2 Webroot?

postgresql - 如何通过 Amazon EC2 将 postgresql 数据移动到 Ubuntu 上的另一个目录?

android - HelloWebView 示例 : java. lang.SecurityException:权限拒绝

c++模板类根据类型通过ref传递构造函数

c++ - 创建一个包含可变类型的元组