// 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.
Segreti e chiavi API (5 articoli)
Le integrazioni del marketplace di Lovable e la build di Vite possono far trapelare env var nel pacchetto client se non si fa attenzione.
- PRE — Audit
import.meta.envreferences. Vite espone tutte le variabili con prefissoVITE_comeimport.meta.env.VITE_*nel client. Non utilizzare maiVITE_SUPABASE_SERVICE_KEYoVITE_STRIPE_SECRET. Instradare invece attraverso un endpoint solo server. - Le integrazioni Stripe / Rinvia / ecc. di PRE — Replace Lovable marketplace test keys with live restricted keys. Lovable a volte vengono fornite con le chiavi
sk_test_*opk_test_*. Prima di andare in modalità live, scambiale con chiavi live limitate che limitano i danni in caso di compromissione. - PRE — Check the
.envfile is not committed. Lovable supporta un file.envcon le chiavi di integrazione. Eseguigit ls-files .env. Se è tracciato, rimuovilo immediatamente:git rm --cached .enve aggiungilo a.gitignore. - PRE — Verify GitHub sync doesn't expose service keys. Se Lovable si sincronizza con GitHub, conferma che il flusso di lavoro delle azioni GitHub o le impostazioni Vercel non riportino i segreti nei log di build. Controlla le tue Azioni → Esecuzioni del flusso di lavoro → fai clic su un'esecuzione → verifica se viene stampato qualche segreto.
- POST — Run Secrets in JavaScript Bundles on the deployed app. La build Vite di Lovable può far penetrare le chiavi in
import.meta.env. Una scansione passiva li troverà.
Controllo dell'accesso al database (5 articoli)
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. Minimo: SELECT consente all'utente di leggere solo le righe in cui
user_id = auth.uid(). Lovable a volte genera tabelle senza criteri; devi aggiungerli. - 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. Aprire Supabase Studio dopo la distribuzione. L'interruttore RLS di ciascuna tabella dovrebbe essere ON. In caso contrario, la tua migrazione non è stata applicata.
- 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.
Autenticazione e sessioni (4 articoli)
L'autenticazione di Lovable è Supabase Auth. Il rischio sta nel modo in cui Lovable lo collega insieme.
- PRE — Ensure all API routes use
getUser(), notgetSession().getSession()legge un cookie non verificato;getUser()convalida con Supabase. CercagetSession()nei gestori API e sostituiscilo. - PRE — Check Lovable's generated auth handlers for token expiry. I token Magic-link necessitano di una scadenza imposta dal server. L'impostazione predefinita è 1 ora: non sovrascrivere a meno che non sia essenziale.
- PRE — Audit the sign-in redirect guard. Il parametro di query
nextdeve iniziare con/, mai//. Se mancante, aggiungere la protezione manualmente. - POST — Test logout destroys the session. Accedi, esci, controlla i cookie (DevTools → Applicazione → Cookie). Il cookie di sessione deve essere cancellato.
HTTP intestazioni e CSP (3 elementi)
L'impalcatura Vite di Lovable non aggiunge CSP per impostazione predefinita. Gli host statici richiedono una configurazione esplicita dell'intestazione.
- PRE — Add security headers via your host's config. Vercel:
vercel.jsonheadersarray. Netlify: file_headers. Include CSP, HSTS, opzioni X-Frame, opzioni X-Content-Type. - PRE — CSP must not have
'unsafe-inline'inscript-src. Utilizza nonce o hash. La build Vite di Lovable funzionerà con il rigoroso CSP. - POST — Run HTTP Security Headers on the deployed URL. Il controllo segnala le intestazioni mancanti e fornisce indicazioni per la correzione specifiche della piattaforma.
Igiene della distribuzione (5 articoli)
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: Impostazioni → Variabili d'ambiente → ambito ciascuno a Production. Non condividere mai i tasti test Stripe con Anteprima.
- DEPLOY — Verify build logs don't echo secrets. Controlla i log di build del tuo provider di distribuzione. Se viene stampato un segreto, è compromesso.
- DEPLOY — Add security headers to
vercel.jsonor_headers. Per Vercel, utilizzareheadersconfig. Per Netlify / Cloudflare, utilizzare il file_headersnella directory pubblica. - POST — Test a Vercel Preview link in a private browser window. Assicurati che CSP nonce sia aggiornato su ogni richiesta e che le intestazioni siano presenti.
- POST — Rotate any test key that ever shipped to production. Anche se è un tasto
sk_test_*, ruotalo dopo averlo visto in produzione.
Lovable trucchi specifici (3 articoli)
Modelli univoci per l'impalcatura e il flusso di distribuzione di Lovable:
import.meta.envis Vite-specific and all-or-nothing. Vite esponeVITE_*vars nel pacchetto client in base alla progettazione. Non esiste un concetto di ambiente solo server in Vite senza un confine API separato. L'impostazione predefinita di Lovable è molto client; è necessario aggiungere API percorsi per operazioni sensibili.- GitHub sync can auto-commit without review. Se Lovable sincronizza nuovamente le modifiche con GitHub, verifica che il flusso di lavoro non venga inviato automaticamente senza la tua approvazione. In caso contrario, un aggiornamento dannoso potrebbe arrivare a main.
- Static-host headers are a different beast than middleware. Vercel, Netlify e Cloudflare Le pagine gestiscono tutte le intestazioni in modo diverso. Se cambi host, ricontrolla che la configurazione dell'intestazione sia applicata: la piattaforma potrebbe non fornire un errore se un'intestazione non è supportata.
Prossimi passi
Esamina general vibe coding security checklist per 51 elementi cross-tool. Quindi vedere step-by-step hardening per modelli più approfonditi su CSP, RLS e auth.
