有没有办法禁止在我的系统上加载模块?假设我想限制我的用户访问子进程或popen2模块。像PHP的'disabled_functions'或任何类似的方法来实现相同的东西。
答案 0 :(得分:2)
正如@Thomas所指出的,黑名单是实施任何安全机制的一种非常糟糕的机制。白名单是一种更安全的方法。
但是解释器内部的机制并不是特别优秀,原因有多种:在源代码级别可利用的解释器中的缺陷将允许用户走过该级别内置的任何机制(和PHP)团队要求Linux供应商停止将此称为安全问题,因为(a)他们每周修复其中一个问题,并且(b)尝试限制不受信任的用户提供的脚本几乎是不可能完成的任务 - - 将FastCGI或类似工具用于可能不受信任的脚本。)
Python解释器可能不是为处理恶意输入而设计的,所以不要将其视为恶意输入。
如果你真的想限制不受信任的用户可以用Python脚本做什么,可以提出一些建议:不要使用mod_python或类似的东西。使用FastCGI或类似工具,您可以指定应运行脚本的用户帐户,并且不会将您的脚本作为Web服务器用户执行。并学习如何配置SELinux或AppArmor以限制该进程可以执行的操作 - 设置其中一个工具可以节省您的巨大麻烦,而且您可以嘲笑所有失败的可爱小漏洞尝试。 / p>