// 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.
- 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). - PRE — Verify
.env.local(or.env.*.local) is in.gitignore. v0'dan dışa aktardığınızda, dışa aktarılan reponun.gitignoreiçinde.env*.localolması gerekir. Bunu doğrulayın. - 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_*veyapk_test_*anahtarlarını içerir. Üretime dağıtmadan önce env vars ile değiştirin. - 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.
- 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. Her politika, kullanıcı sahipliğini
auth.uid()aracılığıyla doğrulamalıdır. - 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.
- PRE — Ensure Server Actions use
getUser(), notgetSession(). Sunucu Eylemi işlevlerindekigetSession()'yiawait supabase.auth.getUser()ile değiştirin. - 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.
- PRE — Check the sign-in redirect guard.
nextparametresi/ile başlamalıdır, asla//ile başlamamalıdır. v0 genellikle bunu içerir, ancak doğrulayın. - 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.
- PRE — Create
src/middleware.tswith 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. - 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. - 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.
- DEPLOY — Verify
.env.localis in.gitignorein the exported repo. Kontrol etmek içingit ls-files .env*komutunu çalıştırın. - 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. - DEPLOY — Audit Vercel build logs for secret echo. Derleme komutunuzda
echo $SECRETveya eşdeğerinin bulunmadığını kontrol edin. - DEPLOY — Confirm Vercel Preview redeploys work correctly. Her Önizleme dağıtımı yeni bir CSP nonce oluşturmalıdır.
- 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:
dangerouslySetInnerHTMLcan come back during design iterations. Review each exported version and replace any occurrences with sanitized alternatives (likereact-markdownwithremark).- Exported middleware is sometimes incomplete. v0'ın
src/middleware.tsdışa aktarımında CSP veya HSTS eksik olabilir. Dağıtımdan önce tamamlandığını doğrulayın. - 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.
