微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php项目优化

目录

一.限制站点目录防止跨站访问

如果a目录被黑,这样会被限制到一定范围的目录中,目录最后一定要加上/,比如/tmp/,而不是/tmp

Nginx配置文件中加入

fastcgi_param  PHP_VALUE  "open_basedir=$document_root:/tmp/:/proc/";

通常Nginx站点配置文件里用了include fastcgi.conf;,这样的,把这行加在fastcgi.conf里就OK了。需要重启Nginx

PHP.ini中加入,这种方式的设置需要重启PHP-fpm后生效

[HOST=www.server110.com]
open_basedir=/home/www/www.server110.com:/tmp/:/proc/
[PATH=/home/www/www.server110.com]
open_basedir=/home/www/www.server110.com:/tmp/:/proc/

二.禁用不安全的PHP函数

因为这些函数有的可以调用系统的命令,比如reboot等

修改PHP.ini,添加如下

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

三.PHP用户站点目录只读权限

站点目录比如/usr/local/Nginx/html,设置为755,里面文件为644,这样PHP用户只能读,不能写,即使有漏洞, 黑客也传不了后门, 更不可能挂木马. 这么干之前告知程序员将文件缓存改为 nosql 内存缓存(例如 memcached、redis 等),上传文件通过接口传到其他服务器(静态服务器)。

程序生成本地缓存是个非常糟糕的习惯,使用文件缓存速度缓慢、浪费磁盘空间、最重要一点是一般情况下服务器无法横向扩展

四.PHP优化

1.程序一旦出现错误,详细错误信息便立刻展示到用户眼前,其中包含路径、有的甚至是数据库账号密码. 注入渗 透密码基本上都是通过这个报错来猜取。生产环境上强烈关闭
vim /etc/PHP.ini

display_errors = On
改为
display_errors = Off

2.关闭PHP信息,不轻易透露自己 PHP 版本信息,防止黑客针对这个版本的 PHP 发动攻击

expose_PHP = On
改为
expose_PHP = Off

3.确保 PHP 检查文件全名(当它在文件结尾没有发现.PHP 它将忽略)

cgi.fix_pathinfo=1
改为
cgi.fix_pathinfo=0

五.上传分离

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

例如:www.xx.com的静态文件地址为内网的nfs服务器,但是nfs服务器只做存储,并没有安装PHP,那样上传后也执行不了木马

六.禁用cul

allow_url_fopen = On
改为
allow_url_fopen = Off

其实这点算不上真正的安全, 并不会导致 web 被入侵等问题,但是这个非常影响性能, 笔者认为它属于狭义的安全问题

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

$data = file_get_contents("http://www.baidu.com/");
以下方法可以获取本地文件内容
$data = file_get_contents("1.txt");

如果你的站点访问量不大、数据库也运行良好,但是web服务器负载出奇的高,请你直接检查下是否有这个方法。目前生产环境已全线禁用,如果PHP工程师需要获取远程web的内容,建议他们使用curl。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐