1. 保持PHP及系统更新
定期更新Ubuntu系统和PHP至最新版本,及时修补已知安全漏洞。使用以下命令更新软件包列表及已安装组件:
sudo apt update && sudo apt upgrade php* -y
2. 优化PHP配置文件(php.ini)
通过调整php.ini关键参数降低安全风险:
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log
eval、exec、system等),防止命令注入。disable_functions = eval,exec,system,passthru,shell_exec,proc_open
2M),防止恶意文件上传攻击。file_uploads = On
upload_max_filesize = 2M
post_max_size = 8M
allow_url_fopen和allow_url_include,防止远程代码执行。allow_url_fopen = Off
allow_url_include = Off
[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
3. 配置Web服务器安全
mod_security(Web应用防火墙)和mod_evasive(防暴力破解),阻止常见攻击(如SQL注入、DDoS)。sudo apt install libapache2-mod-security2
sudo a2enmod security2
sudo systemctl restart apache2
location指令限制对敏感目录(如uploads)的PHP执行权限。location ~ ^/(uploads|assets)/.*\.(php|php5|jsp)$ {
    deny all;
}
4. 强化文件与目录权限
确保PHP文件及目录归属正确,限制访问权限:
sudo chown -R www-data:www-data /var/www/html  # 将所有权赋予Web服务器用户
sudo chmod -R 755 /var/www/html               # 设置目录权限为755(仅所有者可写)
sudo chmod 644 /var/www/html/*.php            # 设置PHP文件权限为644(仅所有者可写)
5. 使用安全模块增强防护
sudo aa-enforce /etc/apparmor.d/usr.sbin.php-fpm  # 启用PHP-FPM的AppArmor配置文件
sudo apt install fail2ban
sudo systemctl enable --now fail2ban
6. 加密与认证安全
sudo apt install certbot python3-certbot-nginx  # 对于Nginx
sudo certbot --nginx -d yourdomain.com
HttpOnly(防止XSS窃取)和Secure(仅HTTPS传输)标志。session.cookie_httponly = On
session.cookie_secure = On
7. 监控与日志管理
/var/www/html)的文件访问和修改行为,及时发现可疑操作。sudo apt install auditd
sudo auditctl -w /var/www/html -p wa -k php_files  # 监控写入和属性变更
8. 输入验证与安全编码
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = :email");
$stmt->bindParam(':email', $email);
$stmt->execute();
$result = $stmt->fetchAll();
9. 限制资源使用
通过php.ini设置脚本执行时间和内存上限,防止资源耗尽攻击:
max_execution_time = 30  # 脚本最大执行时间(秒)
memory_limit = 128M      # 单个脚本最大内存使用量
max_input_vars = 1000    # 限制POST请求的变量数量
10. 定期审计与维护
php.ini、Web服务器配置文件及文件权限,确保未引入新的安全漏洞。