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.

Secretos y claves API (4 artículos)

v0 maneja bien las variables env en el editor, pero los repositorios exportados no heredan esa estructura.

  1. PRE — After exporting, audit all NEXT_PUBLIC_ vars in the exported .env. Cualquier elemento con el prefijo NEXT_PUBLIC_ se envía en el paquete del cliente. Confirme que sean puntos finales (API, solo claves anónimas, nunca roles de servicio).
  2. PRE — Verify .env.local (or .env.*.local) is in .gitignore. Cuando exportas desde v0, el repositorio exportado debe tener .env*.local en .gitignore. Verifique esto.
  3. El código exportado de PRE — Check that v0 didn't hardcode Stripe / Anthropic / OpenAI test keys. v0 a veces incluye claves sk_test_* o pk_test_* codificadas en los componentes. Reemplácelo con env vars antes de implementarlo en producción.
  4. 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.

  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. Cada política debe validar la propiedad del usuario a través de auth.uid().
  3. 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.

  1. PRE — Ensure Server Actions use getUser(), not getSession(). Reemplace cualquier getSession() en las funciones de acción del servidor con await supabase.auth.getUser().
  2. 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.
  3. PRE — Check the sign-in redirect guard. El parámetro next debe comenzar con /, nunca con //. v0 normalmente incluye esto, pero verifíquelo.
  4. 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.

  1. PRE — Create src/middleware.ts with CSP if it doesn't exist. v0 a veces exporta sin middleware. Si falta, generelo con un CSP no basado en once.
  2. 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.
  3. 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.

  1. DEPLOY — Verify .env.local is in .gitignore in the exported repo. Ejecute git ls-files .env* para comprobarlo.
  2. 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.
  3. DEPLOY — Audit Vercel build logs for secret echo. Compruebe que no haya echo $SECRET o equivalente en su comando de compilación.
  4. DEPLOY — Confirm Vercel Preview redeploys work correctly. Cada implementación de Vista previa debe generar un nuevo nonce CSP.
  5. 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:

  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. La exportación src/middleware.ts de Exported middleware is sometimes incomplete. v0 puede carecer de CSP o HSTS. Verifique que esté completo antes de implementarlo.
  3. 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.

// escanea tu app

Deja de leer. Empieza a encontrar las brechas en la tuya.

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.

  • Tier gratis — 3 escaneos / mes, sin tarjeta.
  • Escaneos pasivos contra cualquier URL — sin verificación de dominio.
  • Afinado para 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