有什么方法可以禁止模块加载到我的系统上吗?假设我想限制我的用户访问子流程或popen2模块。例如PHP的'disabled_functions‘或任何类似的方法来实现相同的功能。
发布于 2011-01-30 17:35:32
正如@Thomas指出的那样,黑名单对于实现任何安全机制来说都是一个相当糟糕的机制。白名单是一种更安全的方法。
但是解释器内部的机制并不是特别优秀,原因有很多:解释器中可以在源代码级别利用的缺陷将允许用户直接绕过在该级别构建的任何机制( PHP团队要求Linux供应商停止将其称为安全问题,因为(a)他们每周都会修复其中一个问题,(b)尝试限制不受信任的用户提供的脚本几乎是一项不可能的任务--对可能不受信任的脚本使用FastCGI或类似的工具)。
Python解释器可能不是为处理恶意输入而设计的,因此不要将其视为恶意输入。
如果您真的想限制不受信任的用户可以使用Python脚本做什么,有几条建议:不要使用mod_python或任何类似的东西。使用您允许的FastCGI或类似工具来指定应该运行脚本的用户帐户,而不是以let服务器用户的身份执行脚本。并学习如何配置SELinux或AppArmor以限制该进程所能做的事情--花一个小时设置这些工具中的一个可能会为您省去巨大的麻烦,而且您还可以对所有失败的小漏洞尝试一笑置之。
https://stackoverflow.com/questions/4842049
复制相似问题