// 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.
الأسرار ومفاتيح API (4 عناصر)
يتعامل الإصدار v0 مع env vars بشكل جيد في المحرر ولكن عمليات إعادة الشراء المُصدَّرة لا ترث هذه البنية.
- PRE — After exporting, audit all
NEXT_PUBLIC_vars in the exported.env. يتم شحن أي شيء مسبوق بـNEXT_PUBLIC_في حزمة العميل. تأكد من أنها آمنة (API نقاط النهاية، المفاتيح المجهولة فقط، لا أدوار الخدمة مطلقًا). - PRE — Verify
.env.local(or.env.*.local) is in.gitignore. عند التصدير من الإصدار 0، يجب أن يحتوي الريبو المصدر على.env*.localفي.gitignore. التحقق من هذا. - يتضمن كود PRE — Check that v0 didn't hardcode Stripe / Anthropic / OpenAI test keys. v0 الذي تم تصديره أحيانًا مفاتيح
sk_test_*أوpk_test_*مشفرة ضمن المكونات. استبدل بـ env vars قبل النشر في الإنتاج. - POST — Run Secrets in JavaScript Bundles on the deployed Vercel Preview. إذا وصل أي مفتاح إلى الحزمة، فسيقوم المسح بالعثور عليه.
التحكم في الوصول إلى قاعدة البيانات (3 عناصر)
عادةً ما يتم توجيه جلب بيانات الإصدار v0 عبر إجراءات الخادم Next.js. اتصال قاعدة البيانات نفسه هو من جانب الخادم، ولكن يجب أن تكون سياسات RLS صريحة.
- 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. يجب أن تتحقق كل سياسة من صحة ملكية المستخدم عبر
auth.uid(). - POST — Run the Supabase Row-Level Security active check on a verified domain. يؤكد الشيك تنفيذ RLS.
المصادقة والجلسات (4 عناصر)
يقوم الإصدار v0 بمصادقة السقالات ولكنه لا يفرض التحقق من جانب الخادم تلقائيًا.
- PRE — Ensure Server Actions use
getUser(), notgetSession(). استبدل أيgetSession()في وظائف Server Action بـawait supabase.auth.getUser(). - PRE — Verify that magic-link tokens have server-enforced expiry. الافتراضي Supabase هو ساعة واحدة. إذا تجاوز الكود الذي تم إنشاؤه لـ v0 ذلك، فارجع إلى الوضع الافتراضي.
- PRE — Check the sign-in redirect guard. يجب أن تبدأ المعلمة
nextبـ/، وليس//أبدًا. عادةً ما يتضمن الإصدار v0 هذا، ولكن تحقق منه. - POST — Test logout clears the session. قم بتسجيل الدخول، وتسجيل الخروج، وفحص ملفات تعريف الارتباط (DevTools → Application → Cookies). يجب مسح ملف تعريف ارتباط الجلسة.
HTTP الرؤوس وCSP (3 عناصر)
تحتاج التطبيقات المصدرة لـ v0 إلى برامج وسيطة لـ CSP. لا يتم ترحيل CSP الداخلي للمحرر.
- PRE — Create
src/middleware.tswith CSP if it doesn't exist. يتم تصدير الإصدار v0 أحيانًا بدون برامج وسيطة. إذا كان مفقودًا، فقم بإنشائه باستخدام CSP غير المستند إلى أساس. - PRE — Verify CSP includes
'strict-dynamic'and a per-request nonce. v0's CSP في المحرر آمن ولكن النسخة المصدرة قد تكون غير كاملة. - POST — Run HTTP Security Headers on a Vercel Preview. يُبلغ الفحص عن رؤوس مفقودة وإرشادات الإصلاح.
نظافة النشر (5 عناصر)
يقوم الإصدار v0 بالتصدير إلى GitHub الريبو الخاص بك وتقوم بالنشر إلى Vercel. إعداد البيئة هو مسؤوليتك.
- DEPLOY — Verify
.env.localis in.gitignorein the exported repo. قم بتشغيلgit ls-files .env*للتحقق. - DEPLOY — Set production env vars in Vercel Settings → Environment Variables. قم بنطاق كل منها إلى Proالاستقراء فقط. لا تشارك مطلقًا
sk_live_*مع Preview. - DEPLOY — Audit Vercel build logs for secret echo. تأكد من عدم وجود
echo $SECRETأو ما يعادله في أمر الإنشاء الخاص بك. - DEPLOY — Confirm Vercel Preview redeploys work correctly. يجب أن يؤدي كل نشر للمعاينة إلى إنشاء CSP nonce جديد.
- POST — Rotate any test key that reached production. حتى المفاتيح
sk_test_*يجب تدويرها بعد التعرض للإنتاج.
مسكتك الخاصة بـ v0 (3 عناصر)
الأنماط الفريدة لتصدير المحرر إلى الريبو الخاص بـ v0:
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's
src/middleware.tsقد يفتقر التصدير إلى CSP أو HSTS. تحقق من اكتماله قبل النشر. - Server Actions don't automatically verify auth. ينشئ الإصدار 0 إجراءات الخادم دون عمليات التحقق من المصادقة المضمنة. أضف
const { user } = await supabase.auth.getUser()إلى كل إجراء خادم لتغيير الحالة يدويًا.
الخطوات التالية
تحقق من general vibe coding security checklist لـ 51 عنصرًا مشتركًا للأدوات. ثم قم بمراجعة step-by-step hardening للحصول على أنماط أعمق في CSP وRLS وأمان إجراء الخادم.
