1. 系统基础安全配置
ufw(Ubuntu)或iptables限制入站/出站流量,仅允许HTTP(80)、HTTPS(443)、SSH(22)等必要端口访问。PermitRootLogin no),强制使用SSH密钥对认证(PasswordAuthentication no)。2. Laravel应用核心安全设置
composer update更新Laravel框架及依赖包(如laravel/framework、symfony/http-foundation),集成Dependabot或Renovate等自动化工具监控依赖漏洞。VerifyCsrfToken),确保所有表单包含@csrf指令;对于AJAX请求,在头部添加X-CSRF-TOKEN(从meta标签获取)。required|string|max:255|email|unique:users)验证用户输入,避免SQL注入(如使用Eloquent ORM替代原始查询)和XSS攻击(如{{ }}自动转义输出)。config/session.php中配置安全参数:'driver' => 'file'(或redis/database)、'encrypt' => true(加密会话数据)、'lifetime' => 120(合理设置过期时间)、'secure' => true(仅通过HTTPS传输)。Hash facade(如Hash::make($password))存储用户密码,避免明文保存;验证密码时使用Hash::check($password, $hashedPassword)。3. HTTPS与传输安全
certbot renew --dry-run)。.env中设置APP_URL=https://yourdomain.com,创建ForceHttps中间件(检查$request->secure(),非HTTPS请求重定向至HTTPS),并在Kernel.php中注册为全局中间件。X-Frame-Options: DENY(防点击劫持)、X-XSS-Protection: 1; mode=block(启用地址栏XSS防护)、X-Content-Type-Options: nosniff(防MIME类型嗅探)等头信息;或使用Laravel中间件统一设置。4. 文件与权限安全
www-data),运行sudo chown -R www-data:www-data /var/www/laravel;设置storage(日志/缓存)、bootstrap/cache目录权限为755(chmod -R 755 storage bootstrap/cache),.env文件权限为600(chmod 600 .env),防止未授权访问。vendor(依赖包)、node_modules(前端依赖)等目录,避免泄露项目结构或敏感文件。5. 依赖与漏洞管理
enlightn/security-checker(composer require --dev enlightn/security-checker),运行php artisan security:check检测依赖包中的已知漏洞;或使用OWASP ZAP、Burp Suite等工具进行全面安全扫描。6. 日志与监控
config/logging.php中配置日志级别(如'level' => 'debug'),记录请求、错误、认证等关键事件;将日志存储在安全目录(如storage/logs),避免泄露敏感信息。7. 其他高级防护措施
throttle中间件(如Route::middleware(['throttle:60,1'])->group(function () { ... }))限制API/表单提交频率,防止暴力破解(如密码猜测)和DDoS攻击。ContentSecurityPolicy),设置Content-Security-Policy响应头(如default-src 'self'; script-src 'self' 'nonce-随机值'),限制资源加载来源,防御XSS攻击。config/app.php中禁用未使用的ServiceProvider(如MailServiceProvider若无需邮件功能),减少潜在攻击点。