保护脚本免受黑客攻击(读取目录,修改文件)

时间:2012-03-04 18:08:22

标签: ruby unit-testing testing

我正在尝试编写脚本,它将自动运行我的所有测试并检查失败,就像那样(只需使用“ruby file.rb”运行测试并解析输出):

def failures?(test_file)
  io = IO.popen("ruby #{test_file}")
  log = io.readlines
  io.close

  # parsing output for failures "1 tests, 1 assertions, 0 failures, 0 errors"
  log.last.split(',').select{ |s| s =~ /failures/ }.first[/\d+/] != "0"
end

puts failures?("test.rb")

但有人可以轻易地在“test_file”中放置一些恶意代码并粉碎所有内容:

Dir.glob("*")
Dir.mkdir("HACK_DIR")
File.delete("some_file")

保护ruby脚本免受此类黑客攻击的方法是什么?

1 个答案:

答案 0 :(得分:0)

我做了类似的事情,但使用了“沙盒”的概念。

首先,您创建的测试用户对您的任何操作系统文件都没有权限(当然也不是您的测试文件)。

您的测试系统将首先将整个测试根文件夹复制到沙箱(例如在临时位置创建),授予测试用户对此沙箱的权限并以测试用户身份执行测试。

因此,测试执行文件创建/修改/删除仅限于此沙箱。此外,您可以稍后分析留在此沙箱中的所有测试事后数据。

我在linux上创建文件夹时很容易在/ tmp目录上创建文件夹并使用名为“tester”的特殊用户。

希望这有帮助。