// 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.
- PRE â After exporting, audit all
NEXT_PUBLIC_vars in the exported.env. Tout ce qui porte le prĂ©fixeNEXT_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). - PRE â Verify
.env.local(or.env.*.local) is in.gitignore. Lorsque vous exportez depuis la v0, le dĂ©pĂŽt exportĂ© doit avoir.env*.localdans.gitignore. VĂ©rifiez ceci. - Le code exportĂ© de PRE â Check that v0 didn't hardcode Stripe / Anthropic / OpenAI test keys. v0 inclut parfois des clĂ©s
sk_test_*oupk_test_*codĂ©es en dur dans les composants. Remplacez par des variables d'environnement avant le dĂ©ploiement en production. - 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.
- PRE â If using Supabase, enable RLS on every public table. v0 doesn't generate RLS by default. Add
ENABLE ROW LEVEL SECURITYto everyCREATE TABLEmigration. - PRE â Write explicit RLS policies per table and role. Chaque stratĂ©gie doit valider la propriĂ©tĂ© de l'utilisateur via
auth.uid(). - 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.
- PRE â Ensure Server Actions use
getUser(), notgetSession(). Remplacez toutgetSession()dans les fonctions d'action du serveur parawait supabase.auth.getUser(). - 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.
- PRE â Check the sign-in redirect guard. Le paramĂštre
nextdoit commencer par/, jamais//. La v0 inclut gĂ©nĂ©ralement cela, mais vĂ©rifiez. - 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é.
- PRE â Create
src/middleware.tswith CSP if it doesn't exist. v0 exporte parfois sans middleware. S'il est manquant, gĂ©nĂ©rez-le avec un CSP nonce. - 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. - 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é.
- DEPLOY â Verify
.env.localis in.gitignorein the exported repo. ExĂ©cutezgit ls-files .env*pour vĂ©rifier. - DEPLOY â Set production env vars in Vercel Settings â Environment Variables. Portez chacun sur Production uniquement. Ne partagez jamais
sk_live_*avec Aperçu. - DEPLOY â Audit Vercel build logs for secret echo. VĂ©rifiez qu'aucun
echo $SECRETou Ă©quivalent ne se trouve dans votre commande de build. - DEPLOY â Confirm Vercel Preview redeploys work correctly. Chaque dĂ©ploiement d'aperçu doit gĂ©nĂ©rer un nouveau CSP nonce.
- 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 :
dangerouslySetInnerHTMLcan come back during design iterations. Review each exported version and replace any occurrences with sanitized alternatives (likereact-markdownwithremark).- L'exportation
src/middleware.tsde Exported middleware is sometimes incomplete. v0 peut manquer de CSP ou HSTS. Vérifiez qu'il est terminé avant le déploiement. - 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.
