CentOS下PHP安全审计可从配置、代码、监控三方面入手,具体如下:
一、系统与PHP环境安全配置
- 更新系统与软件
定期执行 yum update
修补系统漏洞,确保PHP及扩展为最新版本。
- 优化PHP配置
- 编辑
/etc/php.ini
:
- 禁用危险函数:
disable_functions = exec,system,shell_exec
。
- 关闭错误显示:
display_errors = Off
,开启日志记录:log_errors = On
并指定安全路径存储日志。
- 限制文件上传大小:
upload_max_filesize = 2M
,并设置 open_basedir
限制脚本访问目录。
- 启用HTTPS:安装SSL证书,配置Web服务器支持HTTPS加密传输。
- 权限与防火墙管理
- Web服务器以低权限用户(如
www-data
)运行,禁止使用root。
- 配置
firewalld
限制端口访问,仅开放HTTP(80)、HTTPS(443)等必要端口。
二、代码安全审计
- 手动代码审查
- 检查用户输入处理:对输入数据进行过滤(如
htmlspecialchars
防XSS)、验证(如正则表达式限制格式)。
- 防SQL注入:使用预处理语句(PDO/MySQLi)替代直接拼接SQL。
- 文件操作安全:限制上传文件类型(如仅允许图片),存储至非Web根目录并校验MIME类型。
- 自动化工具扫描
- 使用 RIPS、Burp Suite 等工具扫描代码,检测SQL注入、XSS、文件包含等漏洞。
- 通过 PHPStan 或 Psalm 进行代码质量分析,发现潜在逻辑漏洞。
三、日志与监控
- 日志管理
- 配置
rsyslog
或 auditd
记录系统及PHP访问日志,定期分析异常请求(如异常参数、未授权访问)。
- 使用
logrotate
定期轮转日志,避免单个文件过大。
- 入侵检测
- 部署 Fail2Ban 监控暴力破解尝试,自动封禁恶意IP。
- 启用SELinux限制进程权限,防止恶意代码越权访问。
四、安全加固最佳实践
- 定期备份网站文件与数据库,存储至异地安全位置。
- 禁用不必要的PHP模块,减少攻击面。
- 对敏感操作(如管理员登录)增加二次验证(如短信/邮箱验证码)。
参考来源: