FixVibe

// docs / security guides / claude code checklist

Claude Code 安全检查清单:26 项

Claude Code(Anthropic 的 CLI 代理)通过斜杠命令生成整个代码库,管理多文件重构,并通过 bash 读取/writes 文件。此清单针对 Claude Code 的特定风险:没有默认安全策略、很少添加速率限制、<code>.claude/CLAUDE.md</code> 作为安全防护文件,以及提交 <code>.env</code> 或缓存令牌的风险。涉及机密、数据库、身份验证、标头、部署和 Claude Code 特定陷阱的 26 个项目。

PRE = 预部署(审核您的源)。 DEPLOY = 在部署时。 POST = 部署后验证。相关项目参考FixVibe 检查category.check-id 表单中的ID。

秘密和 API 密钥(5 项)

Claude Code 读取整个源代码树并输出整个文件。您上下文中的秘密将成为输出中的秘密。

  1. PRE — Create .claude/CLAUDE.md with security policies. 添加:“Security Rules: 切勿将 service_role 密钥内联到客户端捆绑包中。始终通过仅服务器端点路由敏感操作。验证 NEXT_PUBLIC_* 环境变量仅包含安全值(无密钥,无令牌)。” Claude Code 读取 .claude/CLAUDE.md 以获取项目指导。
  2. PRE — Ensure .env.local is in .gitignore. Claude Code 可能会在重构期间意外提交.env.local。运行 git ls-files .env* 以检查跟踪的内容。如果.env.local存在,则它被暴露。
  3. PRE — Audit generated API routes for env-var verification. Claude Code 有时会忘记在使用 process.env.SECRET 之前验证服务器端是否存在。如果缺少环境变量,路由应该快速失败,而不是变成默认值。
  4. PRE — Check the .claude cache directory. Claude Code 将对话上下文缓存在.claude/cache.claude/history 中。不应提交这些文件。将.claude/ 添加到.gitignore
  5. POST — Run secrets.browser-storage on the deployed app. 如果Claude Code 内联了一个键,被动扫描将在渲染的包中找到它。

数据库访问控制(4项)

Claude Code 非常擅长生成模式,但 RLS 策略需要明确的指令。

  1. PRE — Instruct Claude Code on RLS in .claude/CLAUDE.md. 添加:“每个迁移都必须包括ALTER TABLE ... ENABLE ROW LEVEL SECURITYFORCE ROW LEVEL SECURITY。每个策略都必须验证用户的auth.uid()。”
  2. PRE — Review generated migrations for FORCE ROW LEVEL SECURITY. Claude Code 可能会生成ENABLE 但忘记FORCE。如果没有FORCE,表所有者(迁移运行者)将绕过RLS。如果缺少请手动添加。
  3. DEPLOY — Test RLS enforcement after deploy. 打开Supabase Studio,选择一个表,确认RLS 切换为ON。如果Claude Code 的迁移使用ENABLE 而没有FORCE,则切换将显示ON,但执行不完整。
  4. POST — Run the baas.supabase-rls active check. 它尝试使用匿名密钥进行写入。如果成功,RLS 就不完整。将 FORCE 添加到迁移并重新部署。

身份验证和会话(4 项)

Claude Code 可以很好地生成身份验证流程,但不会自动添加速率限制或验证服务器端的所有令牌声明。

  1. PRE — Mandate server-only auth verification in .claude/CLAUDE.md. 添加:“每个改变数据的API 路由都必须在服务器上使用await supabase.auth.getUser() 验证用户。切勿信任请求正文中的getSession() 或用户ID。”
  2. PRE — Check generated auth handlers for token expiry. Magic-link 和密码重置令牌需要服务器强制expires_at。询问Claude Code:“添加一项拒绝超过 1 小时的令牌的检查。”
  3. PRE — Verify sign-in redirect guards. next 参数重定向必须以/ 开头,而不是//。添加到.claude/CLAUDE.md:“验证next参数:必须以/开头,如果以//开头或包含协议则拒绝。”
  4. POST — Test logout clears cookies. 登录、注销、检查应用程序 → Cookie。必须清除会话 cookie。如果它持续存在,则注销端点不会破坏状态。

HTTP 标头和CSP(3 项)

Claude Code 默认情况下不会生成中间件,除非您要求。

  1. PRE — Add middleware request to .claude/CLAUDE.md. 包括:“使用每个请求的随机数、HSTS、X-Frame-Options 和 X-Content-Type-Options 标头生成 src/middleware.ts 和 Content-Security-Policy。”然后请Claude Code实现它。
  2. PRE — Verify src/middleware.ts exists and has CSP. 对于Next.js src/ 布局,中间件必须位于src/middleware.ts,而不是项目根目录。验证 CSP 标头包含 'strict-dynamic' 和随机数。
  3. POST — Run headers.security-headers on the deployed URL. 检查报告丢失的标头并建议针对您的平台进行修复。

部署卫生(4 项)

Claude Code 不会配置您的部署平台——这是您的责任,但值得检查。

  1. DEPLOY — Scope env vars per environment in Vercel (or equivalent). 设置 → 环境变量 → 将每个秘密仅分配给Production。切勿与预览版或开发版共享sk_live_*
  2. DEPLOY — Audit your CI workflow for secret echo. 如果GitHub 操作或其他CI 在任何地方都有echo $SECRET,请将其删除。构建日志已存档;日志中的秘密被泄露。
  3. DEPLOY — Prefer platform-native secret storage.Vercel的设置→环境变量已加密; GitHub 操作秘密总比没有好,但与平台本机存储不匹配。
  4. POST — Rotate any key that reached a public build. 如果密钥出现在 Vercel 预览 URL 或任何公共工件中甚至几秒钟,它就会受到损害。立即旋转。

Claude Code特定陷阱(5 项)

Claude Code 的架构和工作流程独有的模式:

  1. Claude Code forks work into subagents. 在大型任务中,Claude Code 可能会生成多个子代理实例,每个实例都具有部分代码库上下文。如果一个子代理幻觉出一种秘密安全的模式,而另一个子代理却没有,就会出现不一致的情况。仔细检查最终的差异。
  2. Bash operations are unverified. Claude Code 直接执行bash命令。 git commit -m "fix" 很方便,但如果工作目录有一个 .env 文件并且 glob 包含它,它就会提交。始终在Claude Code 提交之前检查git diff --cached
  3. Context window boundaries create gaps. 如果您的代码库很大,Claude Code 的上下文可能会分布在多个窗口中。一个窗口的 .env.local 处理可能与另一个窗口的不同。强制执行 .claude/CLAUDE.md 中的策略并验证输出。
  4. Rate-limiting is almost never added without asking. Claude Code 生成工作 CRUD 但很少包含速率限制标头或指数退避逻辑。在.claude/CLAUDE.md 中明确要求。
  5. .claude/CLAUDE.md is read but not enforced. Claude Code 将您的.claude/CLAUDE.md 视为提示,而不是约束。如果提示与任务冲突,Claude Code 可能会忽略它。始终检查输出。

后续步骤

检查 general vibe coding security checklist 中的 44 个跨工具项,然后查看 step-by-step hardening 中的部署时模式。如果您还使用Cursor,请参阅Cursor security checklist

// scan your app

别再读了,去找你应用里的漏洞。

插入 URL — FixVibe 在不到一分钟的时间内运行本指南中的每项被动检查以及 200 多项其他检查。 Free,无需安装,无卡。

  • Free 层 — 每月 3 次扫描,无卡。
  • 针对任何 URL 进行被动扫描 — 无需域验证。
  • 针对 Cursor、Claude Code、Lovable、Bolt、v0、Replit 进行了调整。
  • Coding-agent prompts for code/config findings, plus operator steps for DNS/provider fixes.
Claude Code 安全检查清单:26 项 — Docs · FixVibe