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
若无需邮件功能),减少潜在攻击点。