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.

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

La v0 gÚre bien les variables d'environnement dans l'éditeur, mais les dépÎts exportés n'héritent pas de cette structure.

  1. PRE — After exporting, audit all NEXT_PUBLIC_ vars in the exported .env. Tout ce qui porte le prĂ©fixe NEXT_PUBLIC_ est livrĂ© dans le package client. Confirmez qu'ils sont sĂ©curisĂ©s (API points de terminaison, clĂ©s anonymes uniquement, jamais de rĂŽles de service).
  2. PRE — Verify .env.local (or .env.*.local) is in .gitignore. Lorsque vous exportez depuis la v0, le dĂ©pĂŽt exportĂ© doit avoir .env*.local dans .gitignore. VĂ©rifiez ceci.
  3. Le code exportĂ© de PRE — Check that v0 didn't hardcode Stripe / Anthropic / OpenAI test keys. v0 inclut parfois des clĂ©s sk_test_* ou pk_test_* codĂ©es en dur dans les composants. Remplacez par des variables d'environnement avant le dĂ©ploiement en production.
  4. POST — Run Secrets in JavaScript Bundles on the deployed Vercel Preview. Si une clĂ© atteint le paquet, l'analyse la trouve.

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

La rĂ©cupĂ©ration des donnĂ©es de la v0 passe gĂ©nĂ©ralement par Next.js Actions du serveur. La connexion Ă  la base de donnĂ©es elle-mĂȘme est cĂŽtĂ© serveur, mais les politiques RLS doivent ĂȘtre explicites.

  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. Chaque stratĂ©gie doit valider la propriĂ©tĂ© de l'utilisateur via auth.uid().
  3. POST — Run the Supabase Row-Level Security active check on a verified domain. Le contrĂŽle confirme RLS l'exĂ©cution.

Authentification et sessions (4 éléments)

v0 échafaude l'authentification mais n'applique pas automatiquement la vérification cÎté serveur.

  1. PRE — Ensure Server Actions use getUser(), not getSession(). Remplacez tout getSession() dans les fonctions d'action du serveur par await supabase.auth.getUser().
  2. PRE — Verify that magic-link tokens have server-enforced expiry. Supabase par dĂ©faut est de 1 heure. Si le code gĂ©nĂ©rĂ© par la v0 le remplace, revenez Ă  la valeur par dĂ©faut.
  3. PRE — Check the sign-in redirect guard. Le paramĂštre next doit commencer par /, jamais //. La v0 inclut gĂ©nĂ©ralement cela, mais vĂ©rifiez.
  4. POST — Test logout clears 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)

Les applications exportées de la v0 nécessitent un middleware pour CSP. Le CSP interne de l'éditeur n'est pas conservé.

  1. PRE — Create src/middleware.ts with CSP if it doesn't exist. v0 exporte parfois sans middleware. S'il est manquant, gĂ©nĂ©rez-le avec un CSP nonce.
  2. PRE — Verify CSP includes 'strict-dynamic' and a per-request nonce. v0 CSP dans l'Ă©diteur est sĂ»r mais la version exportĂ©e peut ĂȘtre incomplĂšte.
  3. POST — Run HTTP Security Headers on a Vercel Preview. L'analyse signale des en-tĂȘtes manquants et corrige les instructions.

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

v0 exporte vers votre dépÎt GitHub et vous déployez sur Vercel. La configuration de l'environnement relÚve de votre responsabilité.

  1. DEPLOY — Verify .env.local is in .gitignore in the exported repo. ExĂ©cutez git ls-files .env* pour vĂ©rifier.
  2. DEPLOY — Set production env vars in Vercel Settings → Environment Variables. Portez chacun sur Production uniquement. Ne partagez jamais sk_live_* avec Aperçu.
  3. DEPLOY — Audit Vercel build logs for secret echo. VĂ©rifiez qu'aucun echo $SECRET ou Ă©quivalent ne se trouve dans votre commande de build.
  4. DEPLOY — Confirm Vercel Preview redeploys work correctly. Chaque dĂ©ploiement d'aperçu doit gĂ©nĂ©rer un nouveau CSP nonce.
  5. POST — Rotate any test key that reached production. MĂȘme les touches sk_test_* doivent ĂȘtre pivotĂ©es aprĂšs l'exposition en production.

Les piÚges spécifiques à la v0 (3 éléments)

ModÚles uniques à l'exportation de l'éditeur vers le dépÎt de la 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'exportation src/middleware.ts de Exported middleware is sometimes incomplete. v0 peut manquer de CSP ou HSTS. Vérifiez qu'il est terminé avant le déploiement.
  3. Server Actions don't automatically verify auth. v0 gĂ©nĂšre des actions de serveur sans vĂ©rifications d'authentification intĂ©grĂ©es. Ajoutez manuellement const { user } = await supabase.auth.getUser() Ă  chaque action du serveur qui change l’état.

Prochaines étapes

Vérifiez le general vibe coding security checklist pour 51 éléments multi-outils. Examinez ensuite step-by-step hardening pour des modÚles plus approfondis sur la sécurité CSP, RLS et Server Action.

// 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.
v0 security checklist: 22 items for Next.js · FixVibe