// 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.
Secretos y claves API (4 artículos)
v0 maneja bien las variables env en el editor, pero los repositorios exportados no heredan esa estructura.
- PRE — After exporting, audit all
NEXT_PUBLIC_vars in the exported.env. Cualquier elemento con el prefijoNEXT_PUBLIC_se envía en el paquete del cliente. Confirme que sean puntos finales (API, solo claves anónimas, nunca roles de servicio). - PRE — Verify
.env.local(or.env.*.local) is in.gitignore. Cuando exportas desde v0, el repositorio exportado debe tener.env*.localen.gitignore. Verifique esto. - El código exportado de PRE — Check that v0 didn't hardcode Stripe / Anthropic / OpenAI test keys. v0 a veces incluye claves
sk_test_*opk_test_*codificadas en los componentes. Reemplácelo con env vars antes de implementarlo en producción. - POST — Run Secrets in JavaScript Bundles on the deployed Vercel Preview. Si alguna clave llegó al paquete, el escaneo la encuentra.
Control de acceso a la base de datos (3 artículos)
La recuperación de datos de v0 generalmente se enruta a través de Next.js acciones del servidor. La conexión de la base de datos en sí es del lado del servidor, pero las políticas RLS deben ser explícitas.
- 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. Cada política debe validar la propiedad del usuario a través de
auth.uid(). - POST — Run the Supabase Row-Level Security active check on a verified domain. El cheque confirma RLS la aplicación.
Autenticación y sesiones (4 artículos)
v0 refuerza la autenticación pero no aplica la verificación del lado del servidor automáticamente.
- PRE — Ensure Server Actions use
getUser(), notgetSession(). Reemplace cualquiergetSession()en las funciones de acción del servidor conawait supabase.auth.getUser(). - PRE — Verify that magic-link tokens have server-enforced expiry. El valor predeterminado Supabase es 1 hora. Si el código generado por v0 lo anula, vuelva al valor predeterminado.
- PRE — Check the sign-in redirect guard. El parámetro
nextdebe comenzar con/, nunca con//. v0 normalmente incluye esto, pero verifíquelo. - POST — Test logout clears the session. Iniciar sesión, cerrar sesión, inspeccionar las cookies (DevTools → Aplicación → Cookies). La cookie de sesión debe borrarse.
HTTP encabezados y CSP (3 elementos)
Las aplicaciones exportadas de v0 necesitan middleware para CSP. El CSP interno del editor no se transfiere.
- PRE — Create
src/middleware.tswith CSP if it doesn't exist. v0 a veces exporta sin middleware. Si falta, generelo con un CSP no basado en once. - PRE — Verify CSP includes
'strict-dynamic'and a per-request nonce. v0 CSP en el editor es seguro, pero la versión exportada puede estar incompleta. - POST — Run HTTP Security Headers on a Vercel Preview. El escaneo informa que faltan encabezados y guía de corrección.
Higiene del despliegue (5 artículos)
v0 exporta a su repositorio GitHub y lo implementa en Vercel. La configuración del entorno es su responsabilidad.
- DEPLOY — Verify
.env.localis in.gitignorein the exported repo. Ejecutegit ls-files .env*para comprobarlo. - DEPLOY — Set production env vars in Vercel Settings → Environment Variables. Alcance cada uno de ellos solo para Producción. Nunca compartas
sk_live_*con Vista previa. - DEPLOY — Audit Vercel build logs for secret echo. Compruebe que no haya
echo $SECRETo equivalente en su comando de compilación. - DEPLOY — Confirm Vercel Preview redeploys work correctly. Cada implementación de Vista previa debe generar un nuevo nonce CSP.
- POST — Rotate any test key that reached production. Incluso las teclas
sk_test_*deben rotarse después de la exposición de producción.
Errores específicos de v0 (3 elementos)
Patrones exclusivos de la exportación del editor al repositorio de v0:
dangerouslySetInnerHTMLcan come back during design iterations. Review each exported version and replace any occurrences with sanitized alternatives (likereact-markdownwithremark).- La exportación
src/middleware.tsde Exported middleware is sometimes incomplete. v0 puede carecer de CSP o HSTS. Verifique que esté completo antes de implementarlo. - Server Actions don't automatically verify auth. v0 genera acciones del servidor sin comprobaciones de autenticación integradas. Agregue
const { user } = await supabase.auth.getUser()a cada acción del servidor que cambie de estado manualmente.
Próximos pasos
Consulte general vibe coding security checklist para ver 51 elementos de herramientas cruzadas. Luego revise step-by-step hardening para conocer patrones más profundos sobre CSP, RLS y la seguridad de Acción del servidor.
