提高针对PHP外壳的安全性

提高针对PHP外壳的安全性,php,Php,我在PHP中禁用了许多函数,如passthru、shell_exec等,但这还不够好。我下载了一些shell(特别是r57和c99),并且正在浏览它们。我看到的是对/etc/和/var/中文件的大量调用。有没有办法阻止nginx用户读取这些文件?用户nginx以“nobody”的身份运行 我曾考虑为nginx或php扩展编写一个模块,但如果有一种更简单的方法不要求我在编写好的C时失败,我就不会考虑了 我还注意到,这些shell中有很多都使用mysql_*函数,我的应用程序中没有一个使用或将永远不

我在PHP中禁用了许多函数,如passthru、shell_exec等,但这还不够好。我下载了一些shell(特别是r57和c99),并且正在浏览它们。我看到的是对/etc/和/var/中文件的大量调用。有没有办法阻止nginx用户读取这些文件?用户nginx以“nobody”的身份运行

我曾考虑为nginx或php扩展编写一个模块,但如果有一种更简单的方法不要求我在编写好的C时失败,我就不会考虑了

我还注意到,这些shell中有很多都使用mysql_*函数,我的应用程序中没有一个使用或将永远不会使用这些函数。ini文件中是否有可以用来禁用这些功能的设置


我还想指出的是,我知道在他们可以上传一个shell之前,shell的安全性应该已经到位,但我想采取额外的预防措施。serverfault已经死了,所以我在这里发布。

我不熟悉nginx,但是你不能对每个网站进行安全沙箱吗?也就是说,我看不出允许对/etc/和/var/进行读访问有什么害处。我不确定你认为存在什么样的漏洞。只要看看这个外壳,它们可能是fopen/fread/etc/passwd和其他cpanel配置文件等等。你试图阻止PHP在服务器被破坏后做一些事情。只需确保限制服务器进程可以写入的位置&确保其中没有任何内容是可执行的,这比尝试将所有可能有害的函数都列入黑名单要好得多。在所有的马都走了之后,每个潜在有害的函数都关上了仓库的门。对于mysql_*函数,你能在没有它们的情况下编译PHP版本吗?