保持系统和PHP更新
定期执行sudo apt update && sudo apt upgrade命令,确保Debian系统及PHP核心组件(如php-cli、php-fpm、Apache/Nginx的PHP模块)安装最新安全补丁。对于第三方PHP扩展(如mbstring、intl、curl),也需同步更新,避免因旧版本漏洞被利用。
优化PHP配置文件(php.ini)
display_errors = Off(禁止在网页显示错误详情)、expose_php = Off(移除HTTP响应头中的PHP版本标识),防止黑客通过错误信息或版本号针对性攻击。open_basedir指定PHP可访问的目录(如open_basedir = /var/www/html:/tmp),防止非法读取系统敏感文件(如/etc/passwd)。register_globals(避免表单数据自动注入全局变量)、allow_url_fopen/allow_url_include(禁止通过URL加载外部文件),减少远程代码执行风险。eval()、exec()、system()等高危函数(在disable_functions中添加),防止恶意代码执行。强化Web服务器配置
/etc/php/8.x/fpm/pool.d/www.conf,设置user和group为低权限用户(如www-data),并限制listen地址为本地(listen = 127.0.0.1:9000),避免直接暴露PHP进程到公网。.htaccess或虚拟主机配置限制对/wp-admin、/admin等敏感目录的访问(如要求密码认证);若使用Nginx,添加location块限制PHP文件的非法访问(如禁止访问.php文件外的上传目录)。部署安全增强工具
extension=suhosin.so并重启PHP服务。/var/log/php-fpm.log),自动封禁频繁发起攻击的IP地址(如1小时内5次登录失败)。实施最小权限原则
www-data)运行(Apache默认使用www-data,Nginx需配置PHP-FPM的user参数),避免权限过高导致系统被完全控制。750(所有者可读写执行,组用户可读执行,其他用户无权限),上传目录权限为755(禁止执行权限,防止上传恶意脚本)。加强输入验证与代码安全
filter_var()函数过滤邮箱、URL等格式,或通过正则表达式匹配预期字符(如仅允许字母数字)。prepare()+execute()),避免SQL注入(如SELECT * FROM users WHERE id = ?,参数通过bindParam()绑定)。eval()、assert()等动态执行代码的函数,如需动态执行,需对输入进行白名单验证。定期审计与监控
/var/log/php-fpm.log或/var/log/php_errors.log)和Web服务器日志(/var/log/apache2/access.log/error.log),使用tail -f实时监控异常请求(如大量404错误、POST请求包含SQL语句)。