温馨提示×

如何提升centos上laravel的安全性

小樊
35
2025-11-23 18:51:04
栏目: 智能运维

CentOS 上提升 Laravel 安全性的可执行清单

一 系统与网络加固

  • 保持系统与软件包更新:定期执行 yum update -y,及时修补 CentOS、PHP、Nginx/Apache、Laravel 等组件漏洞。
  • 配置防火墙:使用 firewalld 仅开放必要端口(如 22/80/443),示例:firewall-cmd --permanent --add-service=http --add-service=https && firewall-cmd --reload
  • 强化 SSH:禁用 root 登录、使用 SSH 密钥、可修改默认端口,并限制可登录用户/来源网段。
  • 启用 SELinux:保持 SELINUX=enforcing,必要时使用 setsebool 与策略模块精细化控制服务行为。
  • 服务最小化:仅安装与运行必要服务,关闭未使用的端口与进程。

二 Web 服务器与 PHP 安全

  • 强制 HTTPS:部署 Let’s Encrypt 证书并配置自动续期,Nginx 设置 return 301 https://$host$request_uri;
  • 安全响应头:启用 Strict-Transport-Security、X-Frame-Options、X-Content-Type-Options、X-XSS-Protection、Content-Security-Policy;可使用 spatie/laravel-security-headers 快速配置。
  • PHP 安全:在 php.ini 中关闭危险函数(如 disable_functions=exec,shell_exec,system,passthru,proc_open,popen)、限制上传大小、开启错误日志但不暴露到 Web、使用非 root 运行 PHP-FPM
  • Web 服务器配置:隐藏版本信息(server_tokens off;)、限制请求方法、设置合适的 client_max_body_size、为上传目录禁用脚本执行(Nginx location /uploads { location ~ \.php$ { deny all; } })。

三 Laravel 应用层防护

  • 保持框架与依赖更新:定期执行 composer update,移除无用依赖;使用 Dependabot/Snykenlightn/security-checker 扫描已知漏洞。
  • 启用内置防护:使用 CSRF(表单加 @csrf)、Eloquent/查询构造器SQL 注入、Blade 自动转义防 XSS、内置 Hash 存储密码。
  • 输入验证与输出转义:对所有用户输入进行验证与清理,输出使用 Blade 的 {{ }} 自动转义。
  • 会话安全:在 config/session.php 启用 secure=truehttp_only=true,登录成功后调用 regenerate() 重置会话 ID,设置合理 lifetime
  • 速率限制:对登录、注册、API 等接口使用 throttle 中间件(如 throttle:60,1)抵御暴力与滥用。
  • 内容安全策略(CSP):通过策略限制脚本/样式来源,显著降低 XSS 风险。
  • 文件上传:限制 类型/大小,存储到非 Web 可访问目录,必要时对文件进行病毒扫描与重命名。
  • 安全头与中间件:在 app/Http/Kernel.php 注册 TrustHostsPreventRequestsDuringMaintenance 等基础中间件。

四 数据与备份

  • 数据库安全:使用强口令、限制数据库账户仅授予最小权限、禁止远程 root 登录、仅监听内网、定期更换密码。
  • 环境变量与敏感信息:将 .env 加入 .gitignore,禁止提交到版本控制;密钥、API Key 等仅存于环境变量。
  • 备份与恢复:定期备份代码与数据库(含结构与数据),保留多份异地副本,定期演练恢复流程。

五 监控审计与持续加固

  • 日志与告警:开启 Laravel 日志PHP-FPM/Syslog,集中收集并监控异常(如多次登录失败、异常请求路径、上传异常)。
  • 安全审计与测试:定期进行 代码审查、依赖漏洞扫描与渗透测试,及时修复问题。
  • 部署与维护:变更通过 CI/CD 自动执行安全基线检查与测试,上线前进行安全检查清单核验。

0