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.

Geheimnisse und API SchlĂŒssel (5 Artikel)

Lovables Marktplatz-Integrationen und Vite-Build können Umgebungsvariablen in das Client-Bundle durchsickern lassen, wenn nicht vorsichtig vorgegangen wird.

  1. PRE — Audit import.meta.env references. Vite macht alle Variablen mit dem PrĂ€fix VITE_ als import.meta.env.VITE_* im Client verfĂŒgbar. Verwenden Sie niemals VITE_SUPABASE_SERVICE_KEY oder VITE_STRIPE_SECRET. Leiten Sie stattdessen ĂŒber einen Nur-Server-Endpunkt weiter.
  2. PRE — Replace Lovable marketplace test keys with live restricted keys. Lovables Stripe/Erneut senden/usw. Integrationen werden manchmal mit sk_test_* oder pk_test_* SchlĂŒsseln ausgeliefert. Tauschen Sie sie vor der Inbetriebnahme gegen aktive, eingeschrĂ€nkte SchlĂŒssel aus, die den Schaden bei Kompromittierung begrenzen.
  3. PRE — Check the .env file is not committed. Lovable erstellt ein GerĂŒst fĂŒr eine .env-Datei mit IntegrationsschlĂŒsseln. FĂŒhren Sie git ls-files .env aus. Wenn es verfolgt wird, entfernen Sie es sofort: git rm --cached .env und fĂŒgen Sie es zu .gitignore hinzu.
  4. PRE — Verify GitHub sync doesn't expose service keys. Wenn Lovable mit GitHub synchronisiert wird, bestĂ€tigen Sie, dass der GitHub-Aktionsworkflow oder die Vercel-Einstellungen keine Geheimnisse in Build-Protokollen widerspiegeln. ÜberprĂŒfen Sie Ihre Aktionen → Workflow-AusfĂŒhrungen → klicken Sie auf eine AusfĂŒhrung → prĂŒfen Sie, ob ein Geheimnis gedruckt wird.
  5. POST — Run Secrets in JavaScript Bundles on the deployed app. Lovables Vite-Build kann SchlĂŒssel in import.meta.env durchsickern lassen. Ein passiver Scan wird sie finden.

Datenbankzugriffskontrolle (5 Artikel)

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. Minimum: SELECT ermöglicht dem Benutzer, nur Zeilen zu lesen, in denen user_id = auth.uid() ist. Lovable generiert manchmal Tabellen ohne Richtlinien; Sie mĂŒssen sie hinzufĂŒgen.
  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. Öffnen Sie Supabase Studio nach der Bereitstellung. Der RLS-Schalter jeder Tabelle sollte ON sein. Wenn nicht, wurde Ihre Migration nicht angewendet.
  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.

Authentifizierung und Sitzungen (4 Elemente)

Die Authentifizierung von Lovable ist Supabase Auth. Das Risiko besteht darin, wie Lovable es miteinander verbindet.

  1. PRE — Ensure all API routes use getUser(), not getSession(). getSession() liest ein nicht verifiziertes Cookie; getUser() validiert mit Supabase. Suchen Sie nach getSession() in API-Handlern und ersetzen Sie es.
  2. PRE — Check Lovable's generated auth handlers for token expiry. Magic-Link-Tokens benötigen einen vom Server erzwungenen Ablauf. Der Standardwert ist 1 Stunde – ĂŒberschreiben Sie ihn nicht, es sei denn, dies ist unbedingt erforderlich.
  3. PRE — Audit the sign-in redirect guard. Der Abfrageparameter next muss mit / beginnen, niemals mit //. Wenn es fehlt, fĂŒgen Sie den Schutz manuell hinzu.
  4. POST — Test logout destroys the session. Anmelden, abmelden, Cookies ĂŒberprĂŒfen (DevTools → Anwendung → Cookies). Das Sitzungscookie muss gelöscht werden.

HTTP Header und CSP (3 Elemente)

Das Vite-GerĂŒst von Lovable fĂŒgt CSP standardmĂ€ĂŸig nicht hinzu. Statische Hosts erfordern eine explizite Header-Konfiguration.

  1. PRE — Add security headers via your host's config. Vercel: vercel.json headers Array. Netlify: _headers Datei. Schließen Sie CSP, HSTS, X-Frame-Optionen und X-Content-Type-Optionen ein.
  2. PRE — CSP must not have 'unsafe-inline' in script-src. Verwenden Sie Nonces oder Hashes. Der Vite-Build von Lovable funktioniert mit striktem CSP.
  3. POST — Run HTTP Security Headers on the deployed URL. Die PrĂŒfung meldet fehlende Header und bietet plattformspezifische Fehlerbehebungshinweise.

Einsatzhygiene (5 Artikel)

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: Einstellungen → Umgebungsvariablen → Bereich jeweils auf Production. Teilen Sie niemals Test-Stripe-SchlĂŒssel mit der Vorschau.
  2. DEPLOY — Verify build logs don't echo secrets. ÜberprĂŒfen Sie die Build-Protokolle Ihres Bereitstellungsanbieters. Wenn ein Geheimnis gedruckt wird, ist es kompromittiert.
  3. DEPLOY — Add security headers to vercel.json or _headers. FĂŒr Vercel verwenden Sie die Konfiguration headers. Verwenden Sie fĂŒr Netlify / Cloudflare die Datei _headers im öffentlichen Verzeichnis.
  4. POST — Test a Vercel Preview link in a private browser window. Stellen Sie sicher, dass CSP Nonce bei jeder Anfrage aktuell ist und Header vorhanden sind.
  5. POST — Rotate any test key that ever shipped to production. Auch wenn es sich um einen sk_test_*-SchlĂŒssel handelt, drehen Sie ihn, nachdem Sie ihn in der Produktion gesehen haben.

Lovable-spezifische Fallstricke (3 Elemente)

Muster, die fĂŒr das GerĂŒst und den Bereitstellungsablauf von Lovable einzigartig sind:

  1. import.meta.env is Vite-specific and all-or-nothing. Vite macht absichtlich VITE_* Variablen im Client-Bundle verfĂŒgbar. In Vite gibt es kein reines Server-Umgebungskonzept ohne eine separate API-Grenze. Die Standardeinstellung von Lovable ist clientlastig. Sie mĂŒssen API Routen fĂŒr sensible VorgĂ€nge hinzufĂŒgen.
  2. GitHub sync can auto-commit without review. Wenn Lovable Änderungen wieder mit GitHub synchronisiert, stellen Sie sicher, dass der Workflow nicht ohne Ihre Zustimmung automatisch pusht. Andernfalls könnte ein bösartiges Update in main landen.
  3. Static-host headers are a different beast than middleware. Vercel, Netlify und Cloudflare Pages behandeln alle Header unterschiedlich. Wenn Sie den Host wechseln, ĂŒberprĂŒfen Sie erneut, ob Ihre Header-Konfiguration angewendet wird. Die Plattform gibt Ihnen möglicherweise keine Fehlermeldung aus, wenn ein Header nicht unterstĂŒtzt wird.

NĂ€chste Schritte

ÜberprĂŒfen Sie das general vibe coding security checklist fĂŒr 51 werkzeugĂŒbergreifende Elemente. Dann siehe step-by-step hardening fĂŒr tiefere Muster zu CSP, RLS und Auth.

// deine App scannen

Genug gelesen. Finde die LĂŒcken in deiner 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-Tier — 3 Scans / Monat, ohne Karte.
  • Passive Scans gegen jede URL — keine Domain-Verifizierung nötig.
  • Abgestimmt auf Cursor, Claude Code, Lovable, Bolt, v0, Replit.
  • Coding-agent prompts for code/config findings, plus operator steps for DNS/provider fixes.
Kostenlosen Scan starten →

keine Anmeldung nötig

Lovable security checklist: 25 items before launch · FixVibe