有什么方法可以禁止在我的系统上加载模块?假设我想限制我的用户访问子进程或 popen2 模块。像 PHP 的 'disabled_functions' 或任何类似的方法来实现同样的事情。
正如@Thomas 指出的那样,黑名单对于实现任何安全机制来说都是一个非常糟糕的机制。白名单是一种更安全的方法。
但由于多种原因,解释器内部的机制并不是特别出色:解释器中可在源代码级别利用的缺陷将允许用户直接绕过该级别内置的任何机制(PHP 团队询问 Linux供应商停止称其为安全问题,因为 (a) 他们每周都会修复其中一个问题,并且 (b) 尝试限制不受信任的用户提供的脚本几乎是一项不可能的任务 - 对可能不受信任的脚本使用 FastCGI 或类似工具)。
Python 解释器可能不是为处理恶意输入而设计的,因此不要这样对待它。
如果您确实想限制不受信任的用户可以使用 Python 脚本执行的操作,有几条建议:不要使用 mod_python 或类似的东西。使用 FastCGI 或类似工具来指定应运行脚本的用户帐户,并且不会以 Web 服务器用户身份执行脚本。并学习如何配置 SELinux 或 AppArmor 来限制该进程可以执行的操作——花一个小时设置其中一个工具可能会为您节省日后的巨大麻烦,而且您还可以嘲笑所有失败的可爱的小漏洞利用尝试。