我正在尝试编写脚本,它将自动运行我的所有测试并检查失败,就像那样(只需使用“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脚本免受此类黑客攻击的方法是什么?
答案 0 :(得分:0)
我做了类似的事情,但使用了“沙盒”的概念。
首先,您创建的测试用户对您的任何操作系统文件都没有权限(当然也不是您的测试文件)。
您的测试系统将首先将整个测试根文件夹复制到沙箱(例如在临时位置创建),授予测试用户对此沙箱的权限并以测试用户身份执行测试。
因此,测试执行文件创建/修改/删除仅限于此沙箱。此外,您可以稍后分析留在此沙箱中的所有测试事后数据。
我在linux上创建文件夹时很容易在/ tmp目录上创建文件夹并使用名为“tester”的特殊用户。
希望这有帮助。