// 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.
- PRE â Audit
import.meta.envreferences. Vite macht alle Variablen mit dem PrĂ€fixVITE_alsimport.meta.env.VITE_*im Client verfĂŒgbar. Verwenden Sie niemalsVITE_SUPABASE_SERVICE_KEYoderVITE_STRIPE_SECRET. Leiten Sie stattdessen ĂŒber einen Nur-Server-Endpunkt weiter. - PRE â Replace Lovable marketplace test keys with live restricted keys. Lovables Stripe/Erneut senden/usw. Integrationen werden manchmal mit
sk_test_*oderpk_test_*SchlĂŒsseln ausgeliefert. Tauschen Sie sie vor der Inbetriebnahme gegen aktive, eingeschrĂ€nkte SchlĂŒssel aus, die den Schaden bei Kompromittierung begrenzen. - PRE â Check the
.envfile is not committed. Lovable erstellt ein GerĂŒst fĂŒr eine.env-Datei mit IntegrationsschlĂŒsseln. FĂŒhren Siegit ls-files .envaus. Wenn es verfolgt wird, entfernen Sie es sofort:git rm --cached .envund fĂŒgen Sie es zu.gitignorehinzu. - 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.
- POST â Run Secrets in JavaScript Bundles on the deployed app. Lovables Vite-Build kann SchlĂŒssel in
import.meta.envdurchsickern lassen. Ein passiver Scan wird sie finden.
Datenbankzugriffskontrolle (5 Artikel)
Every table Lovable creates needs RLS enabled and tightened before production.
- 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. - 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. - 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 toauth.uid(). (FORCE ROW LEVEL SECURITYonly affects the table owner; it does not fix an open policy.) - 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.
- 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.
- PRE â Ensure all API routes use
getUser(), notgetSession().getSession()liest ein nicht verifiziertes Cookie;getUser()validiert mit Supabase. Suchen Sie nachgetSession()in API-Handlern und ersetzen Sie es. - 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.
- PRE â Audit the sign-in redirect guard. Der Abfrageparameter
nextmuss mit/beginnen, niemals mit//. Wenn es fehlt, fĂŒgen Sie den Schutz manuell hinzu. - 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.
- PRE â Add security headers via your host's config. Vercel:
vercel.jsonheadersArray. Netlify:_headersDatei. SchlieĂen Sie CSP, HSTS, X-Frame-Optionen und X-Content-Type-Optionen ein. - PRE â CSP must not have
'unsafe-inline'inscript-src. Verwenden Sie Nonces oder Hashes. Der Vite-Build von Lovable funktioniert mit striktem CSP. - 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.
- DEPLOY â Scope env vars to Production only. Vercel: Einstellungen â Umgebungsvariablen â Bereich jeweils auf Production. Teilen Sie niemals Test-Stripe-SchlĂŒssel mit der Vorschau.
- DEPLOY â Verify build logs don't echo secrets. ĂberprĂŒfen Sie die Build-Protokolle Ihres Bereitstellungsanbieters. Wenn ein Geheimnis gedruckt wird, ist es kompromittiert.
- DEPLOY â Add security headers to
vercel.jsonor_headers. FĂŒr Vercel verwenden Sie die Konfigurationheaders. Verwenden Sie fĂŒr Netlify / Cloudflare die Datei_headersim öffentlichen Verzeichnis. - 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.
- 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:
import.meta.envis Vite-specific and all-or-nothing. Vite macht absichtlichVITE_*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.- 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.
- 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.
