PHP教程

php项目优化

本文主要是介绍php项目优化,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录
  • 一.限制站点目录防止跨站访问
  • 二.禁用不安全的php函数
  • 三.php用户对站点目录只读权限
  • 四.php优化
  • 五.上传分离
  • 六.禁用cul

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

如果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。

这篇关于php项目优化的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!