1. 保持Laravel及依赖库最新
始终使用Laravel的最新稳定版本,及时修复已知安全漏洞。通过composer update命令更新框架及依赖包(如laravel/framework、symfony/http-foundation等),避免因旧版本漏洞引发安全风险。
2. 配置Linux服务器基础安全
mod_rewrite(sudo a2enmod rewrites)和mod_headers模块,Nginx正确设置虚拟主机,确保请求转发至Laravel的public目录;两者均需添加安全头信息(如X-Frame-Options: DENY防点击劫持、X-XSS-Protection: 1; mode=block防XSS、X-Content-Type-Options: nosniff防MIME嗅探)。php.ini关闭错误显示(display_errors = Off),将错误日志记录至/var/log/php_errors.log(error_log = /var/log/php_errors.log);禁用不必要的PHP函数(如exec、system)。3. 强化Laravel应用配置
APP_URL为HTTPS地址(如https://yourdomain.com),通过php artisan key:generate生成唯一的APP_KEY(用于加密敏感数据);确保.env文件不被版本控制(添加至.gitignore)。php artisan config:cache缓存配置,提升性能的同时减少敏感信息泄露风险;设置storage(存储日志、缓存文件)和bootstrap/cache(缓存类文件)目录权限为755,所有者为Web服务器用户(如www-data或apache)。4. 强制HTTPS加密传输
使用Certbot获取并安装SSL证书(sudo certbot --apache或sudo certbot --nginx),配置强制跳转HTTP至HTTPS(如Nginx中添加return 301 https://$host$request_uri;);在Laravel的.env中设置APP_SECURE_HTTP_REDIRECTS=true和SESSION_COOKIE_SECURE=true(会话cookie仅通过HTTPS发送)、CSRF_COOKIE_SECURE=true(CSRF令牌仅通过HTTPS发送)。
5. 实施严格的输入验证与CSRF防护
Validator类或表单请求(Form Request)验证用户输入,如$request->validate(['email' => 'required|email', 'password' => 'required|min:8']),防止SQL注入和XSS攻击。VerifyCsrfToken),确保所有POST、PUT、DELETE表单包含@csrf指令(如<form method="POST" action="/submit">@csrf</form>)。6. 安全会话与身份验证管理
config/session.php中设置secure为true(仅HTTPS传输)、http_only为true(防止JavaScript访问cookie)、same_site为lax(防止CSRF攻击);调整lifetime(会话有效期)为合理值(如120分钟)。bcrypt算法哈希密码($password = bcrypt($request->password));配置密码复杂度(如passwords.php中设置'password' => ['required', 'string', 'min:8', 'regex:/[a-z]/', 'regex:/[A-Z]/', 'regex:/[0-9]/']),要求用户定期更换密码。7. 文件与目录权限控制
sudo chown -R www-data:www-data /var/www/laravel)。755(sudo find /var/www/laravel -type d -exec chmod 755 {} \;),文件权限设为644(sudo find /var/www/laravel -type f -exec chmod 644 {} \;);storage和bootstrap/cache目录需额外赋予Web服务器写权限(sudo chmod -R 775 /var/www/laravel/storage、sudo chmod -R 775 /var/www/laravel/bootstrap/cache)。httpd_sys_rw_content_t上下文(sudo chcon -R -t httpd_sys_rw_content_t /var/www/laravel/storage、sudo chcon -R -t httpd_sys_rw_content_t /var/www/laravel/bootstrap/cache),允许Web服务器写入。8. 定期安全审计与监控
storage/logs/laravel.log)和Web服务器日志(如/var/log/apache2/error.log),识别异常访问(如频繁登录失败、大量404请求)。