系统级安全配置(Linux基础防护)
firewalld或iptables配置防火墙规则,仅允许受信任的IP地址访问Web服务端口(如80、443);启用SELinux(修改/etc/selinux/config文件,设置SELINUX=enforcing),限制进程权限;定期通过sudo yum update(CentOS)或sudo apt update && sudo apt upgrade(Ubuntu)更新系统和软件包,修复已知漏洞。Web服务器安全优化
mod_rewrite(sudo a2enmod rewrite)和mod_headers(sudo a2enmod headers)模块,确保URL重写和HTTP头安全设置生效;重启Apache服务(sudo systemctl restart apache2);配置虚拟主机时,在<Directory>指令中设置AllowOverride All(允许.htaccess文件覆盖配置)和Require all denied(拒绝未授权访问)。add_header X-Frame-Options "SAMEORIGIN"(防止点击劫持)、add_header X-XSS-Protection "1; mode=block"(启用XSS过滤器)、add_header X-Content-Type-Options "nosniff"(防止MIME类型嗅探);限制对敏感目录(如/public外的.env、storage)的访问,添加location ~ /\.(?!well-known).* { deny all; }规则,拒绝访问隐藏文件。PHP环境安全加固
display_errors = Off),将错误信息记录到日志文件(error_log = /var/log/php_errors.log),避免暴露敏感信息;设置合理的memory_limit(如128M)、max_execution_time(如30秒),防止资源耗尽攻击;禁用危险函数(如exec、system、shell_exec),通过disable_functions指令限制。www-data),运行sudo chown -R www-data:www-data /var/www/laravel;设置目录权限为755(sudo chmod -R 755 /var/www/laravel/storage、sudo chmod -R 755 /var/www/laravel/bootstrap/cache),确保Web服务器可写入必要目录,但无法修改核心代码。Laravel应用级安全措施
@csrf指令;使用php artisan key:generate生成唯一的APP_KEY(存储在.env文件中),用于加密会话和敏感数据;配置强会话Cookie,设置SESSION_SECURE_COOKIE=true(仅通过HTTPS传输)、SESSION_HTTP_ONLY=true(禁止JavaScript访问)、SESSION_LIFETIME=120(合理设置超时时间)。Validator类对用户输入进行严格校验,如$request->validate(['email' => 'required|email', 'password' => 'required|min:8']),防范SQL注入和XSS攻击;对输出到视图的内容使用{{ }}语法(自动进行HTML实体编码),避免恶意脚本执行。.env文件中设置APP_URL=https://yourdomain.com;创建HTTPS强制跳转中间件(如HttpsRedirectMiddleware),在handle方法中添加if (!$request->secure()) { return redirect()->secure($request->getRequestUri()); }逻辑,确保所有HTTP请求重定向到HTTPS,加密数据传输。依赖与更新管理
composer update命令更新Laravel框架及其依赖(如laravel/framework、vlucas/phpdotenv);使用自动化工具(如Dependabot、Renovate)监控依赖项的安全更新,及时修复已知漏洞(如CVE-2024-52301参数注入漏洞)。enlightn/security-checker工具扫描项目依赖,识别高风险漏洞(如过时的库、已知的安全问题),生成详细的修复建议。监控与日志审计
storage/logs/laravel.log中,设置日志级别为error(LOG_CHANNEL=stack、LOG_LEVEL=error),记录异常请求、数据库操作等信息;配置Linux系统日志(如/var/log/syslog、/var/log/auth.log),监控登录尝试、文件修改等系统活动。fail2ban工具自动封禁多次登录失败的IP地址(配置/etc/fail2ban/jail.local,设置maxretry=3);通过Logwatch或Nagios监控系统性能和安全事件,实时接收异常告警(如大量404请求、可疑文件访问)。