Files
cloud-chip.cn/SECURITY_REPORT.md
2026-08-08 18:27:38 +08:00

6.9 KiB
Raw Permalink Blame History

企业官网 · 安全等级评估报告

评估对象:cloud-chip-laravel-vueLaravel 12 + Vue3 CDN 零构建栈) 评估日期:2026-08-03 评估方式:源码审计 + 本地运行验证(PHP 8.3 / MySQL 5.7),覆盖路由、控制器、中间件、配置、视图与依赖。


一、综合评级

场景 综合等级 说明
当前(本地开发配置) B 框架与代码安全基线良好;但 .env 仍是开发值(APP_DEBUG=trueSESSION_SECURE_COOKIE=false),且此前缺少响应头与登录节流(本次已修复)。
部署合规后(修正配置 + HTTPS A 达到企业官网安全基线。剩余项均为可选增强。

评级说明:本项目基于 Laravel 12「安全优先」框架,代码层已具备 CSRF、参数化查询、输出转义、严格上传校验等能力;风险主要集中在部署配置纵深防御响应头,均已给出整改项。


二、各安全维度评分

维度 评级 关键依据
注入防护(SQLi / XSS A Eloquent 全程参数化查询,杜绝 SQL 注入;视图默认 {{ }} 转义;富文本经 mews/purifier 净化(default/article 两档)。
身份认证与会话 A 密码 bcrypt 哈希;登录成功 session()->regenerate() 防会话固定;新增登录节流(5 次/分钟);后台具备 RBAC 五角色 + 权限点门禁。
Cookie 安全 B+ http_only=trueencrypt=truesame_site=lax 均已开启;secure.env 中为 false(本地值,上线须置 true)。
配置安全 C+ 当前 .envAPP_DEBUG=trueAPP_ENV=local、数据库弱口令 cloudchip_cn/cloudchip_cn——均为本地开发值,上线前必须修改
传输与响应头 A 本次新增 SecurityHeaders 中间件:CSP、X-Frame-Options(DENY)、X-Content-Type-Options(nosniff)、Referrer-Policy、Permissions-PolicyHSTS 待生产 HTTPS 启用。
文件上传 A image + mimes:jpg,jpeg,png,gif,webp + max:5120 严格校验;存储于 storage/app/public(经 storage:link 暴露,非 PHP 执行目录),命名随机防遍历。
防滥用 / 限流 A 联系表单 RateLimiter 5 次/60 秒;登录接口新增 ThrottlesLogins 5 次/分钟(按 IP+邮箱)。
依赖与供应链 B 仅引入 mews/purifiersimple-qrcode 等少量可信依赖;建议上线前执行 composer audit
日志与错误处理 B+ LOG_CHANNEL=stack;只要 APP_DEBUG=false,异常不会向用户泄露堆栈与环境信息。

三、本次已实施的安全加固(代码层)

  1. 新增 App\Http\Middleware\SecurityHeaders 并注册到 web 中间件组

    • 下发 Content-Security-Policy(限制脚本/样式/连接/表单来源,显著缩小 XSS 影响面)、X-Frame-Options: DENY(防点击劫持)、X-Content-Type-Options: nosniff(防 MIME 嗅探)、Referrer-PolicyPermissions-Policy
    • 生产 + HTTPS 环境下自动追加 Strict-Transport-SecurityHSTS,含 preload)。
    • CSP 针对本项目的零构建架构做了适配:放行 cdn.tailwindcss.com 与内联脚本/样式(否则 Tailwind Play CDN 与内联 tailwind.config 会被拦截)。
  2. 登录接口增加防暴力破解节流

    • LoginController 引入 ThrottlesLogins,同一 IP+邮箱 每分钟最多 5 次,超限返回校验错误并锁定。
  3. 修复联系表单 CSRF 失效缺陷(功能性 + 安全性)

    • 发现布局缺少 <meta name="csrf-token">,导致 Vue 联系表单取不到 token、提交被 Laravel 拦截返回 419(原表单实际不可用)。
    • 已在布局 <head> 补齐该 meta 标签,并经端到端验证:取 token → POST → 返回 {"ok":true}HTTP 200。

四、残余风险与整改建议(按优先级)

P0 · 上线前必须完成

  • 关闭调试模式.envAPP_DEBUG=falseAPP_ENV=production。否则将向访客泄露堆栈、环境变量等敏感信息。
  • 启用安全 CookieSESSION_SECURE_COOKIE=true(HTTPS 站点必须),防止会话被明文中间人窃取。
  • 强制 HTTPS:在反向代理/Web 服务器层 301 跳转 HTTP→HTTPS,并启用 HSTS(中间件已在生产自动下发)。
  • 数据库强口令 + 最小权限:更换为高强度独立口令,账号仅授予本站库所需权限;切勿使用本地弱口令 cloudchip_cn
  • 保护敏感文件:确保 .env.gitignore.workbuddy 等不被 Web 直接访问(当前项目结构 .envpublic/ 之外,已天然隔离;部署时复核 Nginx/Apache 配置,禁止访问点号开头的隐藏文件)。

P1 · 强烈建议

  • 配置可信代理 TrustProxies:若站点置于 CDN / 负载均衡之后,需在 bootstrap/app.php 声明可信代理,否则 secure cookie 与 isSecure() 会误判,影响 HTTPS 与会话安全。
  • 依赖审计:上线前执行 composer audit 并升级存在 CVE 的包。
  • 后台安全增强:管理员登录增加失败告警 / 锁定,条件允许时启用 2FA;对 /admin 异常访问做监控。
  • 异常监控:对批量联系提交、异常登录、5xx 突增配置告警。

P2 · 可选增强

  • 收紧 CSP:将 Tailwind 改为构建产物 + 为内联脚本加 nonce,从而移除 unsafe-inline,把 XSS 防御从「依赖转义」升级为「双层防护」。
  • 合规页面:补充 security.txt、隐私政策与备案信息展示(页脚已预留 ICP / 公安备案位)。
  • 外部资源 SRI:若后续引入任何第三方脚本/样式,添加子资源完整性校验。

五、部署上线前必检清单

检查项 命令 / 位置 期望
调试关闭 .env APP_DEBUG false
环境 .env APP_ENV production
Cookie 安全 .env SESSION_SECURE_COOKIE true
APP_KEY php artisan key:generate(如未生成) 已设置且唯一
路由缓存 php artisan route:cache 无冲突
视图缓存 php artisan view:cache 编译通过
数据库迁移 php artisan migrate --force 成功
依赖审计 composer audit 无高危
HTTPS Web 服务器 / CDN 已启用 + 跳转
静态资源软链 php artisan storage:link /storage 可访问

六、验证记录(本地)

页面 路由 状态码
首页 / 200
关于我们 /about 200
产品服务 /products 200
联系我们 /contact 200
联系表单提交(带 CSRF POST /contact 200 {"ok":true}
安全响应头 所有页面 CSP / XFO / NoSniff / Referrer / Permissions 均已下发

报告由 WorkBuddy 基于真实源码与本地运行结果生成,非泛泛模板。所有 P0 项均为部署配置,不依赖代码改动即可完成。