// 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.
- PRE â Audit
import.meta.envreferences. Vite expose toutes les variables prĂ©fixĂ©esVITE_commeimport.meta.env.VITE_*dans le client. N'utilisez jamaisVITE_SUPABASE_SERVICE_KEYouVITE_STRIPE_SECRET. Acheminez plutĂŽt via un point de terminaison rĂ©servĂ© au serveur. - 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_*oupk_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. - PRE â Check the
.envfile is not committed. Lovable Ă©chafaude un fichier.envavec des clĂ©s d'intĂ©gration. ExĂ©cutezgit ls-files .env. S'il est suivi, supprimez-le immĂ©diatement :git rm --cached .envet ajoutez-le Ă.gitignore. - 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Ă©.
- 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.
- 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 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. - 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. Ouvrez Supabase Studio aprĂšs le dĂ©ploiement. La bascule RLS de chaque table doit ĂȘtre ON. Sinon, votre migration ne s'applique pas.
- 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.
- PRE â Ensure all API routes use
getUser(), notgetSession().getSession()lit un cookie non vĂ©rifié ;getUser()valide avec Supabase. RecherchezgetSession()dans les gestionnaires API et remplacez-le. - 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.
- PRE â Audit the sign-in redirect guard. Le paramĂštre de requĂȘte
nextdoit commencer par/, jamais//. Sâil manque, ajoutez la garde manuellement. - 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.
- PRE â Add security headers via your host's config. Vercel :
vercel.jsonheaderstableau. Netlify : fichier_headers. Incluez CSP, HSTS, X-Frame-Options, X-Content-Type-Options. - PRE â CSP must not have
'unsafe-inline'inscript-src. Utilisez des noms occasionnels ou des hachages. La version Vite de Lovable fonctionnera avec CSP strict. - 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.
- 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.
- 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.
- DEPLOY â Add security headers to
vercel.jsonor_headers. Pour Vercel, utilisezheadersconfig. Pour Netlify / Cloudflare, utilisez le fichier_headersdans le rĂ©pertoire public. - 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.
- 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 :
import.meta.envis Vite-specific and all-or-nothing. Vite expose les variablesVITE_*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.- 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.
- 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.
