php服务器安全体检聚焦五关键点:版本支持性、危险函数禁用、错误信息隐藏、上传目录执行限制、入口文件保护;查清即可覆盖80%基础风险。

PHP服务器安全体检不是走流程,而是聚焦几个关键切口:版本是否还在支持周期、危险函数有没有被关掉、错误信息会不会暴露给用户、上传目录能不能执行代码、入口文件有没有被当普通页面乱用。查清这五点,80%的基础风险就落地了。
确认PHP版本是否仍在官方支持期
过时版本自带已知漏洞,不升级等于留后门。先运行php -v看当前版本,再打开https://www.php.net/supported-versions.php核对是否处于Active Support或Security Fixes阶段。Ubuntu/Debian系统可执行sudo apt update && sudo apt install php升级;CentOS/RHEL建议用源码编译或Remi仓库更新,避免使用系统默认的EOL版本。
检查危险函数是否已被禁用
exec、system、eval、assert这些函数一旦被恶意参数触发,可能直接执行系统命令。打开php.ini(路径常见于/etc/php/*/apache2/php.ini或/usr/local/php/etc/php.ini),找到disable_functions项,确保包含:
exec,passthru,shell_exec,system,proc_open,popen,eval,assert
修改后必须重启Web服务,例如sudo systemctl restart apache2或sudo systemctl restart php-fpm,否则配置不生效。
验证错误信息是否关闭显示
生产环境开启display_errors会把路径、类名、数据库结构全打在页面上。在php.ini中确认以下三项:
- display_errors = Off
- display_startup_errors = Off
- log_errors = On,并指定error_log = /var/log/php_errors.log
改完别忘了重启服务,并用一个语法错误的PHP文件(如)访问测试,页面应空白或返回500,而不是输出一堆报错路径。
审查上传目录与入口文件权限
上传目录若允许执行PHP,等于给攻击者铺好落地通道。两个动作要同步做:
- 在php.ini中设upload_max_filesize = 2M,防止大文件耗尽磁盘
- 用Web服务器规则禁止执行:Nginx加location /uploads { location ~ \.php$ { deny all; } };Apache加Options -ExecCGI和AddHandler none .php到对应目录配置
- index.php不能是万能兜底又没做路由校验的“裸文件”,它应只负责初始化、加载自动加载器、分发请求,而非直接写SQL或输出HTML
确认OpenSSL启用与HTTPS强制跳转
没有HTTPS,登录密码、会话ID、敏感表单数据都在裸奔。先运行php -m | grep openssl确认扩展已加载;再检查Web服务器是否配置了有效证书,并设置HTTP自动跳转HTTPS:
- Apache:在虚拟主机中加入Redirect permanent / https://example.com/
- Nginx:在80端口server块中加return 301 https://$host$request_uri;
最后用浏览器访问HTTP地址,确认跳转发生且地址栏显示锁图标。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











