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.

Secrets et clés API (5 éléments)

Les intégrations du marché de Lovable et la version Vite peuvent divulguer des variables d'environnement dans le bundle client si vous ne faites pas attention.

  1. PRE — Audit import.meta.env references. Vite expose toutes les variables prĂ©fixĂ©es VITE_ comme import.meta.env.VITE_* dans le client. N'utilisez jamais VITE_SUPABASE_SERVICE_KEY ou VITE_STRIPE_SECRET. Acheminez plutĂŽt via un point de terminaison rĂ©servĂ© au serveur.
  2. Les intĂ©grations Stripe / Renvoyer / etc. de PRE — Replace Lovable marketplace test keys with live restricted keys. Lovable sont parfois livrĂ©es avec les clĂ©s sk_test_* ou pk_test_*. Avant de les mettre en ligne, Ă©changez-les avec des clĂ©s restreintes en direct qui limitent les dĂ©gĂąts en cas de compromission.
  3. PRE — Check the .env file is not committed. Lovable Ă©chafaude un fichier .env avec des clĂ©s d'intĂ©gration. ExĂ©cutez git ls-files .env. S'il est suivi, supprimez-le immĂ©diatement : git rm --cached .env et ajoutez-le Ă  .gitignore.
  4. PRE — Verify GitHub sync doesn't expose service keys. Si Lovable se synchronise avec GitHub, confirmez le flux de travail GitHub Actions ou les paramĂštres Vercel ne font pas Ă©cho aux secrets dans les journaux de build. VĂ©rifiez vos actions → ExĂ©cutions du workflow → cliquez sur une exĂ©cution → voyez si un secret est imprimĂ©.
  5. La version Vite de POST — Run Secrets in JavaScript Bundles on the deployed app. Lovable peut divulguer des clĂ©s dans import.meta.env. Un scan passif les trouvera.

ContrÎle d'accÚs à la base de données (5 éléments)

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 permet Ă  l'utilisateur de lire uniquement les lignes oĂč user_id = auth.uid(). Lovable gĂ©nĂšre parfois des tables sans stratĂ©gies ; vous devez les ajouter.
  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. Ouvrez Supabase Studio aprĂšs le dĂ©ploiement. La bascule RLS de chaque table doit ĂȘtre ON. Sinon, votre migration ne s'applique pas.
  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.

Authentification et sessions (4 éléments)

L'authentification de Lovable est Supabase Auth. Le risque réside dans la maniÚre dont Lovable le connecte.

  1. PRE — Ensure all API routes use getUser(), not getSession(). getSession() lit un cookie non vĂ©rifié ; getUser() valide avec Supabase. Recherchez getSession() dans les gestionnaires API et remplacez-le.
  2. PRE — Check Lovable's generated auth handlers for token expiry. Les jetons Magic-link nĂ©cessitent une expiration imposĂ©e par le serveur. La valeur par dĂ©faut est 1 heure ; ne la remplacez pas, sauf si cela est essentiel.
  3. PRE — Audit the sign-in redirect guard. Le paramĂštre de requĂȘte next doit commencer par /, jamais //. S’il manque, ajoutez la garde manuellement.
  4. POST — Test logout destroys the session. Connectez-vous, dĂ©connectez-vous, inspectez les cookies (DevTools → Application → Cookies). Le cookie de session doit ĂȘtre effacĂ©.

HTTP en-tĂȘtes et CSP (3 Ă©lĂ©ments)

L'Ă©chafaudage Vite de Lovable n'ajoute pas CSP par dĂ©faut. Les hĂŽtes statiques nĂ©cessitent une configuration d'en-tĂȘte explicite.

  1. PRE — Add security headers via your host's config. Vercel : vercel.json headers tableau. Netlify : fichier _headers. Incluez CSP, HSTS, X-Frame-Options, X-Content-Type-Options.
  2. PRE — CSP must not have 'unsafe-inline' in script-src. Utilisez des noms occasionnels ou des hachages. La version Vite de Lovable fonctionnera avec CSP strict.
  3. POST — Run HTTP Security Headers on the deployed URL. La vĂ©rification signale les en-tĂȘtes manquants et fournit des conseils de correction spĂ©cifiques Ă  la plate-forme.

HygiÚne de déploiement (5 éléments)

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 : ParamĂštres → Variables d'environnement → PortĂ©e chacune sur Production. Ne partagez jamais les clĂ©s de test Stripe avec Aperçu.
  2. DEPLOY — Verify build logs don't echo secrets. VĂ©rifiez les journaux de build de votre fournisseur de dĂ©ploiement. Si un secret est imprimĂ©, il est compromis.
  3. DEPLOY — Add security headers to vercel.json or _headers. Pour Vercel, utilisez headers config. Pour Netlify / Cloudflare, utilisez le fichier _headers dans le rĂ©pertoire public.
  4. POST — Test a Vercel Preview link in a private browser window. Assurez-vous que CSP le nom occasionnel est rĂ©cent sur chaque demande et que les en-tĂȘtes sont prĂ©sents.
  5. POST — Rotate any test key that ever shipped to production. MĂȘme s'il s'agit d'une clĂ© sk_test_*, faites-la pivoter aprĂšs l'avoir vue en production.

Lovable piÚges spécifiques (3 éléments)

ModÚles uniques à l'échafaudage et au flux de déploiement de Lovable :

  1. import.meta.env is Vite-specific and all-or-nothing. Vite expose les variables VITE_* dans le bundle client de par sa conception. Il n'y a pas de concept d'environnement de serveur uniquement dans Vite sans une limite API distincte. La valeur par défaut de Lovable est lourde en termes de clients ; vous devez ajouter des routes API pour les opérations sensibles.
  2. GitHub sync can auto-commit without review. Si Lovable synchronise les modifications avec GitHub, confirmez que le flux de travail n'est pas envoyé automatiquement sans votre approbation. Sinon, une mise à jour malveillante pourrait atterrir dans main.
  3. Static-host headers are a different beast than middleware. Vercel, Netlify et Cloudflare Pages gĂšrent tous les en-tĂȘtes diffĂ©remment. Si vous changez d'hĂŽte, vĂ©rifiez Ă  nouveau que la configuration de votre en-tĂȘte est appliquĂ©e : la plate-forme peut ne pas vous renvoyer d'erreur si un en-tĂȘte n'est pas pris en charge.

Prochaines étapes

Examinez le general vibe coding security checklist pour 51 éléments multi-outils. Consultez ensuite step-by-step hardening pour des modÚles plus approfondis sur CSP, RLS et auth.

// scanner votre app

ArrĂȘtez de lire. Trouvez les failles dans la vĂŽtre.

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.

  • Plan gratuit — 3 scans / mois, sans carte.
  • Scans passifs contre n'importe quelle URL — pas de vĂ©rification de domaine.
  • OptimisĂ© pour 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