php项目优化
2021/12/15 14:46:59
本文主要是介绍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项目优化的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28怎么把PHP程序打包?-icode9专业技术文章分享
- 2024-09-28怎么用Phar打包PHP程序?-icode9专业技术文章分享
- 2024-09-13手动在github上下载的mfpt包,怎么放到thinkphp5.0框架并正常使用-icode9专业技术文章分享
- 2024-09-05python的<class 'bytearray'>相当于php的哪个数据类型-icode9专业技术文章分享
- 2024-09-05php 导出银行卡号避免科学技术法的方法-icode9专业技术文章分享
- 2024-08-30什么样的php代码质量差被称为垃圾代码-icode9专业技术文章分享
- 2024-08-30用 PHP 调用拼多多的接口以获取订单状态消息的步骤方法和代码示例-icode9专业技术文章分享
- 2024-08-27phpunit单元测试框架的入门和使用方法介绍-icode9专业技术文章分享
- 2024-08-24PHP 中date("w") 周一是多少-icode9专业技术文章分享
- 2024-08-14thinkphp8.0获取域名或主机名方法-icode9专业技术文章分享