- 首页 >
- 问答 >
-
云计算 >
- Linux服务器上Laravel如何提升安全性
Linux服务器上Laravel如何提升安全性
小樊
45
2025-12-20 08:18:18
Linux服务器上 Laravel 安全加固清单
一 服务器与网络基础防护
- 保持系统与软件为最新稳定版:定期执行系统更新(如 Ubuntu/Debian:apt update && apt upgrade;CentOS/RHEL:yum/dnf update),并及时升级 Laravel 与 Composer 依赖,第一时间修补已知漏洞。
- 配置防火墙仅开放必要端口:如使用 firewalld/ufw 仅放行 22/80/443,数据库端口(如 3306/5432)仅内网访问,避免公网暴露。
- 强制 HTTPS:使用 Let’s Encrypt/Certbot 获取免费证书并自动配置 HTTP→HTTPS 跳转,确保全站加密传输。
- Web 服务器安全头与隐藏文件:在 Nginx/Apache 统一添加 X-Frame-Options、X-XSS-Protection、X-Content-Type-Options、Content-Security-Policy 等安全头;禁止访问 .env 等敏感隐藏文件。
- PHP 安全基线:关闭错误显示(display_errors=Off)、开启错误日志(log_errors=On),禁用危险函数(如 exec、system 等),仅启用必要扩展(如 BCMath、Ctype、Fileinfo、JSON、Mbstring、OpenSSL、PDO、Tokenizer、XML)。
二 Laravel 应用层安全配置
- 环境与密钥:确保 .env 纳入 .gitignore 且不在版本控制中;生产环境设置 APP_ENV=production、APP_DEBUG=false,使用 php artisan key:generate 生成唯一 APP_KEY。
- 强制 HTTPS 与会话安全:在 .env 设置 APP_URL=https://…;在 config/session.php 启用 secure=true、http_only=true、same_site=strict/lax,并开启 SESSION_COOKIE_SECURE、CSRF_COOKIE_SECURE,防止明文传输与会话劫持。
- CSRF、验证与输入过滤:启用并正确使用 @csrf、VerifyCsrfToken;所有输入使用 Form Request/Validator 严格校验,输出在 Blade 中默认转义,降低 XSS 风险。
- 查询与注入防护:优先使用 Eloquent/查询构造器 的参数化查询;如必须使用 whereRaw/selectRaw,务必采用占位符绑定参数,避免拼接 SQL。
- 文件上传管控:限制 文件类型/大小,存储于非 Web 可直接访问目录,必要时对文件内容做安全扫描与重命名,防止恶意脚本执行。
- 速率限制与防爆破:对登录、注册、找回密码等接口使用 throttle 中间件限流(如每分钟 60 次),降低暴力破解与滥用风险。
- 安全头与 CSP:在 Nginx/Apache 或 Laravel 中间件 统一下发安全头,配置 CSP 策略逐步收紧脚本与资源来源,增强 XSS 对抗能力。
三 文件权限与进程隔离
- 目录所有权与权限:将项目目录属主设为 Web 服务用户(如 www-data);目录 755、文件 644;确保 storage、bootstrap/cache 对 Web 进程可写(如 775),其余目录只读。
- 禁止访问敏感路径:在 Nginx 使用规则 location ~ /.(?!well-known). { deny all; }* 屏蔽 .env 等隐藏文件;Apache 通过 AllowOverride/mod_rewrite 控制访问。
- 进程与任务隔离:使用 Supervisor 管理 queue:work 常驻进程,使用 Cron 执行 schedule:run;为不同站点/环境使用独立系统用户与目录,降低横向风险。
- 可选 SELinux/AppArmor:若启用 SELinux,为 storage、bootstrap/cache 设置合适上下文(如 httpd_sys_rw_content_t),确保写入不被策略阻断。
四 依赖、数据库与备份监控
- 依赖安全与审计:定期执行 composer update,集成 Dependabot/Renovate 自动升级;使用 enlightn/security-checker 或 php artisan security:check 扫描依赖漏洞并修复。
- 数据库安全:为数据库设置强密码与最小权限账户;禁止公网直连数据库,优先内网/VPC 访问;定期轮换凭据并审计异常查询。
- 日志与监控:在 config/logging.php 设置合适的日志级别与路径,避免记录敏感信息;定期审计 Nginx/Apache 与 Laravel 日志,关注大量 404/500、频繁登录失败等异常;结合 Nagios/Zabbix 等监控告警。
- 备份与回滚:制定包含代码、配置与数据库的定期备份与离线/异地存储策略,保留多份历史并定期演练恢复流程,确保事件可快速恢复。
五 5 分钟快速加固命令清单
- 系统与防火墙
- Ubuntu/Debian:sudo apt update && sudo apt upgrade -y && sudo ufw allow ‘Nginx Full’ && sudo ufw enable
- CentOS/RHEL:sudo dnf update -y && sudo firewall-cmd --permanent --add-service=http --add-service=https && sudo firewall-cmd --reload
- HTTPS(Certbot + Nginx)
- sudo apt install certbot python3-certbot-nginx -y
- sudo certbot --nginx -d yourdomain.com
- Laravel 安全基线与缓存
- cp .env.example .env && php artisan key:generate
- APP_ENV=production APP_DEBUG=false php artisan config:cache && php artisan route:cache && php artisan view:cache
- 文件权限(按需调整路径)
- sudo chown -R www-data:www-data /var/www/laravel
- sudo find /var/www/laravel -type d -exec chmod 755 {} ; && sudo find /var/www/laravel -type f -exec chmod 644 {} ;
- sudo chmod -R 775 /var/www/laravel/storage /var/www/laravel/bootstrap/cache
- 依赖安全扫描
- composer require --dev enlightn/security-checker
- vendor/bin/security-checker security:check