如何为在线评判系统实施沙箱?

时间:2015-09-04 02:54:10

标签: python security sandbox ptrace

OJ(在线评委)允许用户上传任意代码片段以在服务器上执行,但它也有一个沙箱来防止恶意代码运行。例如,在leetcode上,如果我在python中提交此代码:

import subprocess
res = subprocess.check_output(["ls", "/"])
print res

它返回:

Line 36: OSError: [Errno 11] Resource temporarily unavailable

如果我想在python中实现OJ系统,有没有办法监视子进程的系统调用,并禁止某些调用?

我一直在搜索,大多数帖子都是使用ptrace或在虚拟机中运行脚本。我想知道是否有更好的方法。

注意:由于OJ支持上传不同语言的程序(C / python / Java),因此限制python代码(如exec有限范围内的代码)不起作用。

0 个答案:

没有答案