Linux下PHP安全保障需从 PHP配置加固、Web服务器防护、系统权限管理、安全编码实践、持续监控维护 五大维度综合实施,以下是具体措施:
php -m查看已加载模块,移除无用扩展(如mysqli、pdo_mysql若无需数据库连接),在php.ini中注释或删除对应行,减少攻击面。expose_php = Off关闭HTTP头部PHP版本标识;开启display_errors = Off并配置log_errors = On将错误日志记录到/var/log/php_scripts_error.log等安全路径,避免敏感信息暴露给攻击者。allow_url_fopen = Off、allow_url_include = Off阻止远程文件包含/打开;通过disable_functions = system,exec,passthru,eval禁用高危系统函数,防止命令注入。open_basedir = /var/www/html:/tmp约束PHP脚本仅能访问指定目录,避免跨目录读取敏感文件(如/etc/passwd)。session_regenerate_id(true)在用户登录时重新生成会话ID,防止会话固定攻击;设置session.cookie_httponly = On、session.cookie_secure = On(HTTPS环境下)避免Cookie被XSS窃取。www-data)运行,而非root。例如,Apache可通过sudo usermod -a -G www-data $USER将当前用户加入www-data组,修改/etc/apache2/envvars中的export APACHE_RUN_USER=www-data。Options -Indexes到<Directory>指令;Nginx添加autoindex off;到server块。fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;将PHP请求转发至PHP-FPM;Apache通过a2enmod proxy_fcgi启用FastCGI代理。644(所有者可读写,其他用户只读),目录权限设为755(所有者可读写执行,其他用户只读执行)。上传目录(如/var/www/html/uploads)需设为755且所有者为www-data,禁止脚本执行权限(chmod -R 755 uploads)。location ~* ^/uploads/.*\.(php|phtml)$ { deny all; }),防止恶意文件上传后执行。filter_var()函数过滤邮箱、URL等类型;采用预处理语句(PDO/MySQLi)防止SQL注入,例如:$stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?");
$stmt->execute([$username]);
$user = $stmt->fetch();
```。
listen 443 ssl; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem;),确保数据传输加密。sudo apt update && sudo apt upgrade -y更新系统及PHP至最新版本,修复已知安全漏洞。ufw限制入站流量,仅允许HTTP(80)、HTTPS(443)、SSH(22)等必要端口:sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
```。
/var/log/php8.0-fpm.log)、Web服务器访问日志(/var/log/apache2/access.log),使用工具(如Logwatch、ELK Stack)分析异常行为(如大量404请求、可疑POST请求)。sudo setenforce 1)或AppArmor(sudo aa-enforce /etc/apparmor.d/usr.sbin.php8.0-fpm)限制进程权限;安装Web应用防火墙(WAF)如ModSecurity,过滤恶意请求。