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.

Sırlar ve API tuşları (4 öğe)

v0, düzenleyicide env değişkenlerini iyi yönetir ancak dışa aktarılan depolar bu yapıyı devralmaz.

  1. PRE — After exporting, audit all NEXT_PUBLIC_ vars in the exported .env. NEXT_PUBLIC_ ön ekine sahip her şey istemci paketinde gönderilir. Güvenli olduklarını onaylayın (API uç noktalar, yalnızca anon anahtarları, asla hizmet rolleri).
  2. PRE — Verify .env.local (or .env.*.local) is in .gitignore. v0'dan dışa aktardığınızda, dışa aktarılan reponun .gitignore içinde .env*.local olması gerekir. Bunu doğrulayın.
  3. PRE — Check that v0 didn't hardcode Stripe / Anthropic / OpenAI test keys. v0'ın dışa aktarılan kodu bazen bileşenlere sabit kodlanmış sk_test_* veya pk_test_* anahtarlarını içerir. Üretime dağıtmadan önce env vars ile değiştirin.
  4. POST — Run Secrets in JavaScript Bundles on the deployed Vercel Preview. Pakete herhangi bir anahtar ulaşırsa tarama onu bulur.

Veritabanı erişim kontrolü (3 öğe)

v0'ın veri getirme işlemi genellikle Next.js Sunucu Eylemleri aracılığıyla yönlendirilir. Veritabanı bağlantısının kendisi sunucu tarafındadır ancak RLS politikalarının açık olması gerekir.

  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. Her politika, kullanıcı sahipliğini auth.uid() aracılığıyla doğrulamalıdır.
  3. POST — Run the Supabase Row-Level Security active check on a verified domain. Kontrol, RLS yaptırımını onaylar.

Kimlik doğrulama ve oturumlar (4 öğe)

v0 kimlik doğrulamasını destekler ancak sunucu tarafı doğrulamasını otomatik olarak zorunlu kılmaz.

  1. PRE — Ensure Server Actions use getUser(), not getSession(). Sunucu Eylemi işlevlerindeki getSession()'yi await supabase.auth.getUser() ile değiştirin.
  2. PRE — Verify that magic-link tokens have server-enforced expiry. Varsayılan Supabase 1 saattir. Eğer v0'ın oluşturduğu kod onu geçersiz kılarsa, varsayılana geri dönün.
  3. PRE — Check the sign-in redirect guard. next parametresi / ile başlamalıdır, asla // ile başlamamalıdır. v0 genellikle bunu içerir, ancak doğrulayın.
  4. POST — Test logout clears the session. Oturum açın, oturumu kapatın, çerezleri inceleyin (DevTools → Uygulama → Çerezler). Oturum çerezinin temizlenmesi gerekir.

HTTP başlıkları ve CSP (3 öğe)

v0'ın dışa aktarılan uygulamaları CSP için ara yazılıma ihtiyaç duyar. Editörün dahili CSP özelliği aktarılmaz.

  1. PRE — Create src/middleware.ts with CSP if it doesn't exist. v0 bazen ara yazılım olmadan dışa aktarılır. Eksikse, onu bir kez tabanlı CSP ile oluşturun.
  2. Düzenleyicideki PRE — Verify CSP includes 'strict-dynamic' and a per-request nonce. v0'ın CSP'si güvenlidir ancak dışa aktarılan sürüm eksik olabilir.
  3. POST — Run HTTP Security Headers on a Vercel Preview. Tarama, eksik başlıkları ve düzeltme kılavuzunu bildirir.

Dağıtım hijyeni (5 öğe)

v0, GitHub repo'nuza aktarılır ve siz de Vercel'ye dağıtırsınız. Ortam kurulumu sizin sorumluluğunuzdadır.

  1. DEPLOY — Verify .env.local is in .gitignore in the exported repo. Kontrol etmek için git ls-files .env* komutunu çalıştırın.
  2. DEPLOY — Set production env vars in Vercel Settings → Environment Variables. Her birini yalnızca Prodüksiyon kapsamına alın. Asla sk_live_*'yi Önizleme ile paylaşmayın.
  3. DEPLOY — Audit Vercel build logs for secret echo. Derleme komutunuzda echo $SECRET veya eşdeğerinin bulunmadığını kontrol edin.
  4. DEPLOY — Confirm Vercel Preview redeploys work correctly. Her Önizleme dağıtımı yeni bir CSP nonce oluşturmalıdır.
  5. POST — Rotate any test key that reached production. sk_test_* tuşları bile prodüksiyona maruz kaldıktan sonra döndürülmelidir.

v0'a özgü kazanımlar (3 öğe)

V0'ın düzenleyiciden depoya aktarımına özgü desenler:

  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. Exported middleware is sometimes incomplete. v0'ın src/middleware.ts dışa aktarımında CSP veya HSTS eksik olabilir. Dağıtımdan önce tamamlandığını doğrulayın.
  3. Server Actions don't automatically verify auth. v0, yerleşik kimlik doğrulama denetimleri olmadan Sunucu Eylemleri oluşturur. Durum değiştiren her Sunucu Eylemine manuel olarak const { user } = await supabase.auth.getUser() ekleyin.

Sonraki adımlar

51 çapraz araç öğesi için general vibe coding security checklist öğesini kontrol edin. Ardından CSP, RLS ve Sunucu Eylemi güvenliğine ilişkin daha derin modeller için step-by-step hardening'yi inceleyin.

// scan your app

Okumayı bırak. Kendi uygulamandaki açıkları bulmaya başla.

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 katman — ayda 3 tarama, kart yok.
  • Herhangi bir URL'ye karşı pasif taramalar — etki alanı doğrulaması gerekmez.
  • Cursor, Claude Code, Lovable, Bolt, v0, Replit için ayarlandı.
  • Coding-agent prompts for code/config findings, plus operator steps for DNS/provider fixes.
v0 security checklist: 22 items for Next.js · FixVibe