python - 在服务器上安全地执行用户提交的 python 代码

标签 python user-input

我正在研究启动一个项目,该项目涉及执行用户通过 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/

相关文章:

php - 这些嵌套的 if/elseif 语句的更优雅的解决方案是什么?

python - 大类对性能有显着影响吗?

python - 使用模板时 flask 错误

java - JOptionPane 输入到 int

C++ 验证 - 截断设置为下一个输入

c - 从标准输入读取各种输入

c - 如何循环用户输入并将其复制到文件,直到使用 C 输入 "exit"字符串?

python - 可变长度前缀字符串的操作

python - 在 Django 模板中声明变量和 if 语句

python - 当我的用户使用 gae-simpleauth 登录时,如何从 Google 帐户检索电子邮件地址并将其存储在我的应用程序的用户个人资料中?