保持系统与依赖更新
定期更新Debian系统和Laravel及其依赖组件,是修复已知安全漏洞的核心措施。使用sudo apt update && sudo apt upgrade命令更新系统软件包;通过composer update更新Laravel框架及依赖包;集成Dependabot或Renovate等自动化工具,实时监控并自动升级依赖项,确保及时获取安全补丁。
强化系统级安全配置
ufw(Uncomplicated Firewall)限制入站/出站流量,仅允许必要端口(如HTTP 80、HTTPS 443、SSH 22)开放。执行sudo ufw allow 22/tcp(允许SSH)、sudo ufw allow 80/tcp(允许HTTP)、sudo ufw allow 443/tcp(允许HTTPS),最后启用防火墙sudo ufw enable。Port 2222),禁用root远程登录(PermitRootLogin no),强制使用SSH密钥认证(在~/.ssh/authorized_keys中添加公钥),降低SSH暴力破解风险。/etc/pam.d/common-password文件,添加minlen=12(最小长度12)、dcredit=-1(至少1个小写字母)、ucredit=-1(至少1个大写字母)等规则,强制用户使用强密码。优化Laravel应用安全设置
@csrf指令(如<form method="POST" action="/submit">@csrf</form>),验证请求合法性,防止跨站请求伪造攻击。required|string|max:255)严格校验用户输入,避免SQL注入和XSS攻击。例如,在控制器中使用$request->validate(['username' => 'required|string|max:255'])。DB::select('SELECT * FROM users WHERE id = '.$id)),优先使用Eloquent模型或查询构建器(如User::find($id)),ORM会自动处理参数绑定,防止SQL注入。.env文件中设置APP_URL=https://yourdomain.com,创建ForceHttps中间件(php artisan make:middleware ForceHttps),在中间件中添加return redirect()->secure($request->getRequestUri()),强制所有HTTP请求重定向到HTTPS,确保数据传输加密。ContentSecurityPolicy),设置Content-Security-Policy响应头(如default-src 'self'; script-src 'self' 'nonce-随机值'),限制资源加载来源,有效防御XSS攻击。在app/Http/Kernel.php中注册中间件,应用到所有请求。加强文件与权限管理
storage和bootstrap/cache目录需可写(chmod -R 755 storage bootstrap/cache),项目根目录权限设为755,文件权限设为644。避免将敏感文件(如.env)暴露在web根目录外。.env文件的权限设为600(chmod 600 .env),防止未授权访问;确保APP_KEY(应用密钥)安全,若泄露需立即更换(php artisan key:generate)。部署安全工具与监控
enlightn/security-checker工具定期扫描项目依赖,识别安全漏洞。执行composer require --dev enlightn/security-checker安装,运行php artisan security:check查看扫描结果。.env中设置APP_LOG_LEVEL=debug),使用Fail2ban监控系统日志,自动封禁频繁失败的登录尝试;结合Zabbix、Prometheus等工具实时监控系统性能与异常活动,及时响应安全事件。遵循安全开发最佳实践
throttle中间件限制请求频率(如Route::middleware(['throttle:60,1'])->group(function () { ... })),防止暴力破解和DDoS攻击。config/session.php中配置安全的会话驱动(如database或redis),设置secure选项为true(仅通过HTTPS传输会话Cookie),http_only为true(防止JavaScript访问Cookie),same_site为strict(防止跨站请求伪造)。laravel-permission用于权限管理),确保应用符合安全标准。