lnmp架构下PHP安全配置

1. 使用open_basedir限制虚拟主机跨目录访问(限制php在指定的目录里活动)

2. 禁用不安全PHP函数

disable_functions = show_source,system,shell_exec,passthru,exec,popen,proc_open,proc_get_status,phpinfo

3. php 用户只读

例如站点 www.share.com 根目录 用户与组为 nobody,而运行 php 的用户和组为 phpuser。目录权限为 755,文件权限为 644. 如此,php 为只读, 无法写入任何文件到站点目录下。也就是说用户不能上传文件,即使有漏洞, 黑客也传不了后门, 更不可能挂木马. 这么干之前告知程序员将文件缓存改为 nosql 内存缓存(例如 memcached、redis 等),上传的文件通过 接口传到其他服务器(静态服务器)。

4. 关闭php错误日志

display_errors = On 改为 display_errors = Off

5. php 上传分离

将文件上传到远程服务器,例如 nfs 等。当然也可以调用写好的 php 接口, 即使有上传漏洞,那么文件也被传到了静态服务器上, 木马等文件根本无法执行.

6. 关闭php信息

expose_php = On

改为

expose_php = Off

隐藏自己 php 版本信息,防止黑客针对这个版本的 php 发动攻击

7. 禁止动态加载链接库

disable_dl = On; 改为

enable_dl = Off;

8. 禁用打开远程url

allow_url_fopen = On 改为

allow_url_fopen = Off

其实这点算不上真正的安全, 并不会导致 web 被入侵等问题,但是这个非常影响性能.

以下方法将无法获取远程 url 内容

$data = file_get_contents("http://www.baidu.com/");

以下方法可以获取本地文件内容

$data = file_get_contents("test.txt");

相关推荐