- 首页 >
- 问答 >
-
云计算 >
- centos服务器上laravel的安全性如何保障
centos服务器上laravel的安全性如何保障
小樊
42
2025-12-13 12:18:34
CentOS 上 Laravel 安全加固清单
一 系统与网络防护
- 保持系统与软件包更新:定期执行 yum update 与安全补丁更新,及时修复 CentOS 与中间件漏洞。
- 防火墙最小化放通:使用 firewalld 仅开放必要端口(如 22/80/443),可按来源 IP 白名单精细化控制管理口访问。
- 强制 HTTPS/TLS:使用 Let’s Encrypt 获取免费证书并配置自动续期,全站 301 跳转至 HTTPS,避免明文传输。
- 网络分区与端口收敛:数据库、缓存等后端服务仅监听内网接口,禁止公网直连;对外仅暴露 Nginx/Apache 与必要的管理端口。
二 Web 服务器与 PHP 安全
- 以 public/ 为 Web 根目录:禁止直接访问应用源码与敏感目录,Nginx 示例将 root 指向 /var/www/laravel/public。
- 安全响应头:统一添加 X-Frame-Options: DENY/SAMEORIGIN、X-XSS-Protection: 1; mode=block、X-Content-Type-Options: nosniff,必要时启用 Content-Security-Policy(CSP)。
- 隐藏敏感文件:禁止访问 .env 与版本控制元数据(如 .git),Nginx 可用正则规则统一拒绝。
- PHP 生产配置:关闭错误显示(display_errors = Off)、开启错误日志(log_errors = On)、合理设置 memory_limit / max_execution_time;禁用危险函数(如 exec、system、shell_exec、proc_open、popen、eval);限制上传(如 upload_max_filesize=2M)并启用 open_basedir。
三 Laravel 应用层安全配置
- 环境与密钥:确保 .env 已加入 .gitignore 且不在版本库;生产环境设置 APP_ENV=production、APP_DEBUG=false;使用 php artisan key:generate 生成唯一 APP_KEY。
- 配置缓存:上线前执行 php artisan config:cache,减少每次请求读取 .env 与配置文件的次数。
- 防护机制:启用并正确使用 CSRF(表单 @csrf、AJAX 设置 X-CSRF-TOKEN)、输入验证(Form Request/Validator)、Eloquent/查询构造器 防 SQL 注入、Blade 自动转义防 XSS。
- 会话与 Cookie:开启 SESSION_SECURE_COOKIE=true、CSRF_COOKIE_SECURE=true、SESSION_HTTP_ONLY=true、SESSION_SAME_SITE=strict/lax,并设置合理 lifetime。
- 认证与授权:使用内置认证;基于 Gate/Policy 实现细粒度权限;对登录等敏感接口启用 throttle 限流(如每分钟 60 次)防暴力破解。
- 文件上传:严格限制 类型/大小,存储于非 Web 可直接访问路径,必要时对文件内容做安全扫描与重命名。
四 文件权限与运行用户
- 运行用户与组:统一使用 nginx 或 apache 运行 Web 服务,避免以 root 执行 PHP-FPM。
- 目录所有权:将项目目录属主设为 Web 服务用户(如 nginx:nginx 或 apache:apache)。
- 权限基线:目录 755、文件 644;对 storage、bootstrap/cache 赋予 Web 服务写权限(如 775),并确保日志与缓存目录不可被 Web 直接列目录。
- SELinux 场景:若启用 SELinux,为可写目录设置 httpd_sys_rw_content_t 上下文,确保写入不报错且隔离合规。
- 示例命令:
- chown -R nginx:nginx /var/www/laravel
- find /var/www/laravel -type d -exec chmod 755 {} ;
- find /var/www/laravel -type f -exec chmod 644 {} ;
- chmod -R 775 /var/www/laravel/storage /var/www/laravel/bootstrap/cache
- 如启用 SELinux:chcon -R -t httpd_sys_rw_content_t /var/www/laravel/storage /var/www/laravel/bootstrap/cache
五 依赖、数据库、备份与监控审计
- 依赖安全:定期执行 composer update;使用 roave/security-advisories 或 enlightn/security-checker 扫描已知漏洞,及时升级修复。
- 数据库安全:使用强随机密码与最小权限账户,禁止应用以 root 连接;限制来源主机与端口;开启 TLS(如条件允许)保障复制/管理链路安全。
- 备份与恢复:制定定期备份(代码与数据库分离、异地/多副本),定期演练恢复流程,保留加密与校验确保可用性与完整性。
- 日志与监控:生产日志级别设为 error/info,避免记录敏感信息;集中采集 Nginx/php-fpm/Laravel 日志,结合 Prometheus/Grafana 或 Zabbix/Nagios 设置告警(如频繁 5xx、异常登录失败、暴力请求)。
- 安全审计与渗透测试:定期使用 OWASP ZAP/Sucuri 等工具扫描;上线前执行安全清单与代码审计,持续跟踪框架与依赖的安全通告。