FixVibe

// docs / security guides / v0 checklist

v0 security checklist: 22 items for Next.js

v0 generates React + Tailwind + shadcn/ui components and full Next.js apps for Vercel. This checklist targets v0-specific risks: design iterations that re-add dangerouslySetInnerHTML, exported codebases that lose middleware, Server Actions that skip auth verification, and environment variables that have to be set again once the code lives in your own repo. 22 items across secrets, database, auth, headers, deployment, and v0-specific gotchas.

PRE = pre-deploy (audit your source). DEPLOY = at deploy time. POST = post-deploy verification.

Segreti e chiavi API (4 articoli)

v0 gestisce bene le variabili env nell'editor ma i repository esportati non ereditano quella struttura.

  1. PRE — After exporting, audit all NEXT_PUBLIC_ vars in the exported .env. Tutto ciò che ha il prefisso NEXT_PUBLIC_ viene fornito nel pacchetto client. Conferma che siano sicuri (API endpoint, solo chiavi anon, mai ruoli di servizio).
  2. PRE — Verify .env.local (or .env.*.local) is in .gitignore. Quando esporti da v0, il repository esportato dovrebbe avere .env*.local in .gitignore. Verifica questo.
  3. Il codice esportato di PRE — Check that v0 didn't hardcode Stripe / Anthropic / OpenAI test keys. v0 a volte include le chiavi sk_test_* o pk_test_* codificate nei componenti. Sostituisci con env vars prima della distribuzione in produzione.
  4. POST — Run Secrets in JavaScript Bundles on the deployed Vercel Preview. Se una chiave ha raggiunto il pacchetto, la scansione la trova.

Controllo dell'accesso al database (3 articoli)

Il recupero dei dati di v0 di solito viene instradato attraverso le azioni del server Next.js. La connessione al database stessa è lato server, ma le policy RLS devono essere esplicite.

  1. PRE — If using Supabase, enable RLS on every public table. v0 doesn't generate RLS by default. Add ENABLE ROW LEVEL SECURITY to every CREATE TABLE migration.
  2. PRE — Write explicit RLS policies per table and role. Ogni policy deve convalidare la proprietà dell'utente tramite auth.uid().
  3. POST — Run the Supabase Row-Level Security active check on a verified domain. Il controllo conferma l'applicazione RLS.

Autenticazione e sessioni (4 articoli)

v0 supporta l'autenticazione ma non applica automaticamente la verifica lato server.

  1. PRE — Ensure Server Actions use getUser(), not getSession(). Sostituisci qualsiasi getSession() nelle funzioni Azione server con await supabase.auth.getUser().
  2. PRE — Verify that magic-link tokens have server-enforced expiry. L'impostazione predefinita Supabase è 1 ora. Se il codice generato da v0 lo sovrascrive, ripristina l'impostazione predefinita.
  3. PRE — Check the sign-in redirect guard. Il parametro next deve iniziare con /, mai //. v0 di solito lo include, ma verifica.
  4. POST — Test logout clears the session. Accedi, esci, controlla i cookie (DevTools → Applicazione → Cookie). Il cookie di sessione deve essere cancellato.

HTTP intestazioni e CSP (3 elementi)

Le app esportate da v0 necessitano di middleware per CSP. Il CSP interno dell'editor non viene trasferito.

  1. PRE — Create src/middleware.ts with CSP if it doesn't exist. v0 a volte esporta senza middleware. Se mancante, generalo con un CSP basato su nonce.
  2. PRE — Verify CSP includes 'strict-dynamic' and a per-request nonce. CSP di v0 nell'editor è sicuro ma la versione esportata potrebbe essere incompleta.
  3. POST — Run HTTP Security Headers on a Vercel Preview. La scansione segnala intestazioni mancanti e corregge le indicazioni.

Igiene della distribuzione (5 articoli)

v0 esporta nel tuo repository GitHub e tu lo distribuisci in Vercel. La configurazione dell'ambiente è una tua responsabilità.

  1. DEPLOY — Verify .env.local is in .gitignore in the exported repo. Esegui git ls-files .env* per controllare.
  2. DEPLOY — Set production env vars in Vercel Settings → Environment Variables. Ambito ciascuno solo a Produzione. Non condividere mai sk_live_* con Anteprima.
  3. DEPLOY — Audit Vercel build logs for secret echo. Controlla che nel comando build non sia presente echo $SECRET o equivalente.
  4. DEPLOY — Confirm Vercel Preview redeploys work correctly. Ogni distribuzione di anteprima dovrebbe generare un nuovo CSP nonce.
  5. POST — Rotate any test key that reached production. Anche i tasti sk_test_* devono essere ruotati dopo l'esposizione in produzione.

Trucchi specifici della v0 (3 articoli)

Modelli unici per l'esportazione dall'editor al repository di v0:

  1. dangerouslySetInnerHTML can come back during design iterations. Review each exported version and replace any occurrences with sanitized alternatives (like react-markdown with remark).
  2. L'esportazione src/middleware.ts di Exported middleware is sometimes incomplete. v0 potrebbe mancare di CSP o HSTS. Verificare che sia completo prima della distribuzione.
  3. Server Actions don't automatically verify auth. v0 genera azioni server senza controlli di autenticazione integrati. Aggiungi manualmente const { user } = await supabase.auth.getUser() a ogni azione del server che cambia stato.

Prossimi passi

Controlla general vibe coding security checklist per 51 elementi cross-tool. Quindi rivedi step-by-step hardening per modelli più approfonditi su CSP, RLS e sulla sicurezza di Server Action.

// scansiona la tua app

Smetti di leggere. Inizia a trovare le falle nella tua.

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 scansioni / mese, senza carta.
  • Scansioni passive contro qualsiasi URL — nessuna verifica di dominio.
  • Ottimizzato per Cursor, Claude Code, Lovable, Bolt, v0, Replit.
  • Coding-agent prompts for code/config findings, plus operator steps for DNS/provider fixes.
v0 security checklist: 22 items for Next.js · FixVibe