FixVibe

// docs / security guides / lovable checklist

Lovable security checklist: 25 items before launch

Lovable is a fast path from idea to a published full-stack app on Supabase and Vite. This checklist targets the risks that come with that stack: RLS that must be enabled and tightened on every table Lovable creates, test keys from integrations, import.meta.env leaking env vars into the Vite bundle, GitHub sync exposing secrets, and missing security headers. 25 items across secrets, database, auth, headers, deployment, and Lovable-specific gotchas.

PRE = pre-deploy (audit your source). DEPLOY = at deploy time. POST = post-deploy verification.

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

Интеграция Lovable с торговой площадкой и сборка Vite могут привести к утечке переменных env в клиентский пакет, если не соблюдать осторожность.

  1. PRE — Audit import.meta.env references. Vite отображает все переменные с префиксом VITE_ как import.meta.env.VITE_* в клиенте. Никогда не используйте VITE_SUPABASE_SERVICE_KEY или VITE_STRIPE_SECRET. Вместо этого используйте маршрутизацию через конечную точку только для сервера.
  2. Интеграции PRE — Replace Lovable marketplace test keys with live restricted keys. Lovable Stripe / Resend / и т. д. иногда поставляются с ключами sk_test_* или pk_test_*. Прежде чем начать работу, замените их активными ключами с ограниченным доступом, которые ограничивают ущерб в случае компрометации.
  3. PRE — Check the .env file is not committed. Lovable создает файл .env с ключами интеграции. Беги git ls-files .env. Если оно отслеживается, немедленно удалите его: git rm --cached .env и добавьте в .gitignore.
  4. PRE — Verify GitHub sync doesn't expose service keys. Если Lovable синхронизируется с GitHub, убедитесь, что рабочий процесс GitHub Действия или настройки Vercel не отображают секреты в журналах сборки. Проверьте свои действия → Запуски рабочего процесса → щелкните запуск → посмотрите, распечатан ли какой-либо секрет.
  5. POST — Run Secrets in JavaScript Bundles on the deployed app. Сборка Vite Lovable может привести к утечке ключей в import.meta.env. Пассивное сканирование их найдет.

Контроль доступа к базе данных (5 позиций)

Every table Lovable creates needs RLS enabled and tightened before production.

  1. PRE — Enable RLS on every public table. In Supabase Studio, Tables → for each public.* table → the RLS toggle must be ON, with policies for each command.
  2. PRE — Write explicit policies per table and role. Минимум: SELECT позволяет пользователю читать только те строки, где user_id = auth.uid(). Lovable иногда генерирует таблицы без политик; вы должны добавить их.
  3. PRE — Check Lovable's generated policies, not just the toggle. A policy such as USING (true) keeps RLS "on" while letting every caller through. Scope each policy to auth.uid(). (FORCE ROW LEVEL SECURITY only affects the table owner; it does not fix an open policy.)
  4. DEPLOY — Re-verify RLS is enforced after deploy. Откройте Supabase Studio после развертывания. Переключатель RLS каждой таблицы должен быть ON. Если нет, ваша миграция не применялась.
  5. POST — Run a FixVibe scan on the deployed app. Check the Supabase Row-Level Security result: it shows any table an anonymous visitor can read with your public key.

Аутентификация и сеансы (4 шт.)

Lovable имеет аутентификацию Supabase Auth. Риск заключается в том, как Lovable соединяет их вместе.

  1. PRE — Ensure all API routes use getUser(), not getSession(). getSession() считывает непроверенный файл cookie; getUser() подтверждает Supabase. Найдите getSession() в обработчиках API и замените его.
  2. PRE — Check Lovable's generated auth handlers for token expiry. Токены Magic-link должны иметь срок действия, определяемый сервером. По умолчанию — 1 час. Не меняйте значение, если это не необходимо.
  3. PRE — Audit the sign-in redirect guard. Параметр запроса next должен начинаться с /, а не //. Если он отсутствует, добавьте охрану вручную.
  4. POST — Test logout destroys the session. Войдите, выйдите из системы, проверьте файлы cookie (Инструменты разработчика → Приложение → Файлы cookie). Файл cookie сеанса необходимо удалить.

Заголовки HTTP и CSP (3 шт.)

Подсистема Vite Lovable не добавляет CSP по умолчанию. Статические хосты требуют явной настройки заголовка.

  1. PRE — Add security headers via your host's config. Vercel: vercel.json headers массив. Netlify: _headers файл. Включите CSP, HSTS, X-Frame-Options, X-Content-Type-Options.
  2. PRE — CSP must not have 'unsafe-inline' in script-src. Используйте одноразовые номера или хеши. Сборка Vite Lovable будет работать со строгим CSP.
  3. POST — Run HTTP Security Headers on the deployed URL. Проверка сообщает об отсутствии заголовков и предоставляет рекомендации по исправлению для конкретной платформы.

Гигиена развертывания (5 пунктов)

Lovable hosts published apps itself (Lovable docs). If you export the code and deploy it to Vercel, Netlify or Cloudflare Pages instead, each host handles headers and env vars differently.

  1. DEPLOY — Scope env vars to Production only. Vercel: Настройки → Переменные среды → область действия каждой до Production. Никогда не делитесь тестовыми ключами Stripe с Preview.
  2. DEPLOY — Verify build logs don't echo secrets. Проверьте журналы сборки вашего поставщика развертывания. Если какой-либо секрет напечатан, он скомпрометирован.
  3. DEPLOY — Add security headers to vercel.json or _headers. Для Vercel используйте конфигурацию headers. Для Netlify / Cloudflare используйте файл _headers в общедоступном каталоге.
  4. POST — Test a Vercel Preview link in a private browser window. Убедитесь, что CSP nonce обновлен для каждого запроса и присутствуют заголовки.
  5. POST — Rotate any test key that ever shipped to production. Даже если это клавиша sk_test_*, поверните ее после того, как увидите ее в производстве.

Lovable-специфичные ошибки (3 шт.)

Шаблоны, уникальные для каркаса Lovable и процесса развертывания:

  1. import.meta.env is Vite-specific and all-or-nothing. Vite специально предоставляет переменные VITE_* в клиентском пакете. В Vite нет концепции серверного окружения без отдельной границы API. По умолчанию Lovable требует большого количества клиентов; вы должны добавить маршруты API для конфиденциальных операций.
  2. GitHub sync can auto-commit without review. Если Lovable синхронизируется обратно на GitHub, убедитесь, что рабочий процесс не запускается автоматически без вашего согласия. В противном случае вредоносное обновление может попасть в файл main.
  3. Static-host headers are a different beast than middleware. Vercel, Netlify и Cloudflare Страницы обрабатывают заголовки по-разному. Если вы меняете хосты, еще раз проверьте, применена ли конфигурация вашего заголовка — платформа может не выдать вам ошибку, если заголовок не поддерживается.

Следующие шаги

Просмотрите general vibe coding security checklist, чтобы найти 51 предмета для перекрестных инструментов. Затем см. step-by-step hardening для более подробной информации о CSP, RLS и аутентификации.

// scan your app

Хватит читать. Найдите бреши в своём приложении.

Drop in a URL — FixVibe runs every passive check from this guide plus the rest of its 230+ passive checks, usually in under a minute. Free, no install, no card.

  • Free уровень — 3 скана/месяц, без карты.
  • Пассивное сканирование любых URL — проверка домена не требуется.
  • Настроен на Cursor, Claude Code, Lovable, Bolt, v0, Replit.
  • Coding-agent prompts for code/config findings, plus operator steps for DNS/provider fixes.
Lovable security checklist: 25 items before launch · FixVibe