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.

الأسرار ومفاتيح API (4 عناصر)

يتعامل الإصدار v0 مع env vars بشكل جيد في المحرر ولكن عمليات إعادة الشراء المُصدَّرة لا ترث هذه البنية.

  1. PRE — After exporting, audit all NEXT_PUBLIC_ vars in the exported .env. يتم شحن أي شيء مسبوق بـ NEXT_PUBLIC_ في حزمة العميل. تأكد من أنها آمنة (API نقاط النهاية، المفاتيح المجهولة فقط، لا أدوار الخدمة مطلقًا).
  2. PRE — Verify .env.local (or .env.*.local) is in .gitignore. عند التصدير من الإصدار 0، يجب أن يحتوي الريبو المصدر على .env*.local في .gitignore. التحقق من هذا.
  3. يتضمن كود PRE — Check that v0 didn't hardcode Stripe / Anthropic / OpenAI test keys. v0 الذي تم تصديره أحيانًا مفاتيح sk_test_* أو pk_test_* مشفرة ضمن المكونات. استبدل بـ env vars قبل النشر في الإنتاج.
  4. POST — Run Secrets in JavaScript Bundles on the deployed Vercel Preview. إذا وصل أي مفتاح إلى الحزمة، فسيقوم المسح بالعثور عليه.

التحكم في الوصول إلى قاعدة البيانات (3 عناصر)

عادةً ما يتم توجيه جلب بيانات الإصدار v0 عبر إجراءات الخادم Next.js. اتصال قاعدة البيانات نفسه هو من جانب الخادم، ولكن يجب أن تكون سياسات RLS صريحة.

  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. يجب أن تتحقق كل سياسة من صحة ملكية المستخدم عبر auth.uid().
  3. POST — Run the Supabase Row-Level Security active check on a verified domain. يؤكد الشيك تنفيذ RLS.

المصادقة والجلسات (4 عناصر)

يقوم الإصدار v0 بمصادقة السقالات ولكنه لا يفرض التحقق من جانب الخادم تلقائيًا.

  1. PRE — Ensure Server Actions use getUser(), not getSession(). استبدل أي getSession() في وظائف Server Action بـ await supabase.auth.getUser().
  2. PRE — Verify that magic-link tokens have server-enforced expiry. الافتراضي Supabase هو ساعة واحدة. إذا تجاوز الكود الذي تم إنشاؤه لـ v0 ذلك، فارجع إلى الوضع الافتراضي.
  3. PRE — Check the sign-in redirect guard. يجب أن تبدأ المعلمة next بـ /، وليس // أبدًا. عادةً ما يتضمن الإصدار v0 هذا، ولكن تحقق منه.
  4. POST — Test logout clears the session. قم بتسجيل الدخول، وتسجيل الخروج، وفحص ملفات تعريف الارتباط (DevTools → Application → Cookies). يجب مسح ملف تعريف ارتباط الجلسة.

HTTP الرؤوس وCSP (3 عناصر)

تحتاج التطبيقات المصدرة لـ v0 إلى برامج وسيطة لـ CSP. لا يتم ترحيل CSP الداخلي للمحرر.

  1. PRE — Create src/middleware.ts with CSP if it doesn't exist. يتم تصدير الإصدار v0 أحيانًا بدون برامج وسيطة. إذا كان مفقودًا، فقم بإنشائه باستخدام CSP غير المستند إلى أساس.
  2. PRE — Verify CSP includes 'strict-dynamic' and a per-request nonce. v0's CSP في المحرر آمن ولكن النسخة المصدرة قد تكون غير كاملة.
  3. POST — Run HTTP Security Headers on a Vercel Preview. يُبلغ الفحص عن رؤوس مفقودة وإرشادات الإصلاح.

نظافة النشر (5 عناصر)

يقوم الإصدار v0 بالتصدير إلى GitHub الريبو الخاص بك وتقوم بالنشر إلى Vercel. إعداد البيئة هو مسؤوليتك.

  1. DEPLOY — Verify .env.local is in .gitignore in the exported repo. قم بتشغيل git ls-files .env* للتحقق.
  2. DEPLOY — Set production env vars in Vercel Settings → Environment Variables. قم بنطاق كل منها إلى Proالاستقراء فقط. لا تشارك مطلقًا sk_live_* مع Preview.
  3. DEPLOY — Audit Vercel build logs for secret echo. تأكد من عدم وجود echo $SECRET أو ما يعادله في أمر الإنشاء الخاص بك.
  4. DEPLOY — Confirm Vercel Preview redeploys work correctly. يجب أن يؤدي كل نشر للمعاينة إلى إنشاء CSP nonce جديد.
  5. POST — Rotate any test key that reached production. حتى المفاتيح sk_test_* يجب تدويرها بعد التعرض للإنتاج.

مسكتك الخاصة بـ v0 (3 عناصر)

الأنماط الفريدة لتصدير المحرر إلى الريبو الخاص بـ 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. Exported middleware is sometimes incomplete. v0's src/middleware.ts قد يفتقر التصدير إلى CSP أو HSTS. تحقق من اكتماله قبل النشر.
  3. 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 وأمان إجراء الخادم.

// scan your app

كفّ عن القراءة. ابدأ بإيجاد الثغرات في تطبيقك.

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 الطبقة — 3 عمليات مسح/شهر، بدون بطاقة.
  • عمليات الفحص السلبي ضد أي URL — لا حاجة للتحقق من المجال.
  • تم ضبطه على 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