我正在研究启动一个项目,该项目涉及执行用户通过 HTML 表单输入的 python 代码。我知道这可能是致命的 (exec
),但我已经看到它至少在 one instance 中成功完成了.
我给 Python Challenge 的开发者发了一封邮件我被告知他们正在使用他们自己想出的解决方案,他们只透露他们正在使用“操作系统提供的安全功能”,并且“操作系统 [Linux] 提供了您需要的大部分安全性,如果你知道如何使用它。”
有谁知道执行此操作的安全方法吗?我考虑过为每次提交生成一个新的 VM,但这会产生太多开销,而且几乎不可能有效实现。
最佳答案
在现代 Linux 上,除了 chroot(2) 之外,您还可以使用 clone(2) 而不是 fork(2) 来进一步限制进程。有几个有趣的 clone(2) 标志:
CLONE_NEWIPC (new namespace for semaphores, shared memory, message queues)
CLONE_NEWNET (new network namespace - nice one)
CLONE_NEWNS (new set of mountpoints)
CLONE_NEWPID (new set of process identifiers)
CLONE_NEWUTS (new hostname, domainname, etc)
以前此功能是在 OpenVZ 中实现的,然后合并到上游,因此不再需要修补内核。
关于python - 在服务器上安全地执行用户提交的 python 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1737524/