FixVibe

// docs / security guides / claude code checklist

Чек-лист безопасности Claude Code: 26 пунктов

Claude Code (агент CLI Anthropic) генерирует целые базы кода с помощью косых команд, управляет многофайловым рефакторингом и читает файлы /writes через bash. Этот контрольный список нацелен на конкретные риски Claude Code: отсутствие политик безопасности по умолчанию, редко добавляемое ограничение скорости, <code>.claude/CLAUDE.md</code> в качестве файла защиты, а также риск фиксации <code>.env</code> или кэшированных токенов. 26 элементов по секретам, базе данных, аутентификации, заголовкам, развертыванию и ошибкам, специфичным для Claude Code.

PRE = предварительное развертывание (проверка источника). DEPLOY = во время развертывания. POST = проверка после развертывания. Ссылка на элементы FixVibe, проверьте идентификаторы в форме category.check-id, где это необходимо.

Секреты и ключи API (5 шт.)

Claude Code читает все исходные деревья и выводит целые файлы. Секреты в вашем контексте становятся секретами на выходе.

  1. PRE — Create .claude/CLAUDE.md with security policies. Добавьте: "Security Rules: Никогда не встраивайте ключи service_role в клиентские пакеты. Всегда маршрутизируйте конфиденциальные операции через конечные точки, доступные только на сервере. Убедитесь, что NEXT_PUBLIC_* переменные env содержат только безопасные значения (без ключей, без токенов)". 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 на стороне сервера перед его использованием. Маршруты должны быстро завершаться сбоем, если переменная env отсутствует, а не переходить к значению по умолчанию.
  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 SECURITY и FORCE 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. Он пытается выполнить запись с помощью ключа anon. Если это удастся, 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. Включите: «Создать src/middleware.ts с Content-Security-Policy, используя nonce для каждого запроса, HSTS, заголовки X-Frame-Options и X-Content-Type-Options». Затем попросите Claude Code реализовать это.
  2. PRE — Verify src/middleware.ts exists and has CSP. При макете Next.js src/ промежуточное программное обеспечение должно находиться в src/middleware.ts, а не в корне проекта. Убедитесь, что заголовок CSP включает 'strict-dynamic' и nonce.
  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, он фиксируется. Всегда проверяйте git diff --cached перед тем, как Claude Code примет решение.
  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