// docs / security guides / lovable checklist
Lovable security checklist: 25 items before launch
Lovable is a fast path from idea to a published full-stack app on Supabase and Vite. This checklist targets the risks that come with that stack: RLS that must be enabled and tightened on every table Lovable creates, test keys from integrations, import.meta.env leaking env vars into the Vite bundle, GitHub sync exposing secrets, and missing security headers. 25 items across secrets, database, auth, headers, deployment, and Lovable-specific gotchas.
PRE = pre-deploy (audit your source). DEPLOY = at deploy time. POST = post-deploy verification.
الأسرار ومفاتيح API (5 عناصر)
يمكن لتكاملات سوق Lovable وVite build أن تتسبب في تسرب env vars إلى حزمة العميل إذا لم تكن حذرًا.
- PRE — Audit
import.meta.envreferences. يعرض Vite جميع المتغيراتVITE_البادئة كـimport.meta.env.VITE_*في العميل. لا تستخدم أبدًاVITE_SUPABASE_SERVICE_KEYأوVITE_STRIPE_SECRET. قم بالتوجيه عبر نقطة نهاية للخادم فقط بدلاً من ذلك. - PRE — Replace Lovable marketplace test keys with live restricted keys. Lovable's Stripe / إعادة الإرسال / إلخ. يتم أحيانًا شحن عمليات التكامل مع مفاتيح
sk_test_*أوpk_test_*. قبل بدء البث المباشر، قم بتبديلها بمفاتيح مباشرة مقيدة تحد من الضرر في حالة اختراقها. - PRE — Check the
.envfile is not committed. Lovable يدعم ملف.envبمفاتيح التكامل. قم بتشغيلgit ls-files .env. إذا تم تعقبه، قم بإزالته على الفور:git rm --cached .envوأضفه إلى.gitignore. - PRE — Verify GitHub sync doesn't expose service keys. إذا تمت مزامنة Lovable مع GitHub، فتأكد من أن سير عمل الإجراءات GitHub أو إعدادات Vercel لا تعكس الأسرار في سجلات الإنشاء. تحقق من الإجراءات ← تشغيل سير العمل ← انقر فوق تشغيل ← تحقق من طباعة أي سر.
- يمكن أن يؤدي إنشاء Vite الخاص بـ POST — Run Secrets in JavaScript Bundles on the deployed app. Lovable إلى تسريب المفاتيح إلى
import.meta.env. سوف يجدهم الفحص السلبي.
التحكم في الوصول إلى قاعدة البيانات (5 عناصر)
Every table Lovable creates needs RLS enabled and tightened before production.
- PRE — Enable RLS on every public table. In Supabase Studio, Tables → for each
public.*table → the RLS toggle must be ON, with policies for each command. - PRE — Write explicit policies per table and role. الحد الأدنى: SELECT يسمح للمستخدم بقراءة الصفوف التي يوجد بها
user_id = auth.uid()فقط. Lovable يقوم أحيانًا بإنشاء جداول بدون سياسات؛ يجب عليك إضافتها. - PRE — Check Lovable's generated policies, not just the toggle. A policy such as
USING (true)keeps RLS "on" while letting every caller through. Scope each policy toauth.uid(). (FORCE ROW LEVEL SECURITYonly affects the table owner; it does not fix an open policy.) - DEPLOY — Re-verify RLS is enforced after deploy. افتح Supabase الاستوديو بعد النشر. يجب أن يكون تبديل RLS لكل جدول هو ON. إذا لم يكن الأمر كذلك، فلن يتم تطبيق الترحيل الخاص بك.
- POST — Run a FixVibe scan on the deployed app. Check the Supabase Row-Level Security result: it shows any table an anonymous visitor can read with your public key.
المصادقة والجلسات (4 عناصر)
مصادقة Lovable هي Supabase مصادقة. يكمن الخطر في كيفية ربط Lovable معًا.
- PRE — Ensure all API routes use
getUser(), notgetSession().getSession()يقرأ ملف تعريف ارتباط لم يتم التحقق منه؛getUser()يتم التحقق من صحته باستخدام Supabase. ابحث عنgetSession()في معالجات API واستبدلها. - PRE — Check Lovable's generated auth handlers for token expiry. تحتاج الرموز المميزة لـ Magic-link إلى انتهاء الصلاحية بواسطة الخادم. الافتراضي هو ساعة واحدة - لا تقم بالتجاوز إلا إذا كان ذلك ضروريًا.
- PRE — Audit the sign-in redirect guard. يجب أن تبدأ معلمة الاستعلام
nextبـ/، وليس//أبدًا. إذا كان مفقودًا، أضف الواقي يدويًا. - POST — Test logout destroys the session. قم بتسجيل الدخول، وتسجيل الخروج، وفحص ملفات تعريف الارتباط (DevTools → Application → Cookies). يجب مسح ملف تعريف ارتباط الجلسة.
HTTP الرؤوس وCSP (3 عناصر)
Lovable لا تضيف سقالة Vite CSP بشكل افتراضي. تتطلب المضيفات الثابتة تكوينًا واضحًا للرأس.
- PRE — Add security headers via your host's config. Vercel:
vercel.jsonheadersالمصفوفة. نيتليفي:_headersالملف. تضمين CSP، HSTS، خيارات X-Frame، خيارات نوع المحتوى X. - PRE — CSP must not have
'unsafe-inline'inscript-src. استخدم الحروف الفاصلة أو التجزئة. Lovable سيعمل تصميم Vite الخاص بـ CSP بشكل صارم. - POST — Run HTTP Security Headers on the deployed URL. يُبلغ الفحص عن الرؤوس المفقودة ويوفر إرشادات الإصلاح الخاصة بالنظام الأساسي.
نظافة النشر (5 عناصر)
Lovable hosts published apps itself (Lovable docs). If you export the code and deploy it to Vercel, Netlify or Cloudflare Pages instead, each host handles headers and env vars differently.
- DEPLOY — Scope env vars to Production only. Vercel: الإعدادات ← متغيرات البيئة ← نطاق كل منها إلى Proالانتاج. لا تشارك مطلقًا مفاتيح الاختبار Stripe مع Preview.
- DEPLOY — Verify build logs don't echo secrets. تحقق من سجلات البناء الخاصة بموفر النشر. إذا تمت طباعة أي سر، فسيتم اختراقه.
- DEPLOY — Add security headers to
vercel.jsonor_headers. بالنسبة إلى Vercel، استخدمheadersالتكوين. بالنسبة إلى Netlify / Cloudflare، استخدم الملف_headersفي الدليل العام. - POST — Test a Vercel Preview link in a private browser window. تأكد من أن CSP nonce جديد في كل طلب وأن الرؤوس موجودة.
- POST — Rotate any test key that ever shipped to production. حتى لو كان مفتاحًا
sk_test_*، قم بتدويره بعد رؤيته في الإنتاج.
Lovable- مشكلات محددة (3 عناصر)
الأنماط الفريدة لتدفق السقالة والنشر Lovable:
import.meta.envis Vite-specific and all-or-nothing. يكشف Vite عنVITE_*vars في حزمة العميل حسب التصميم. لا يوجد مفهوم env للخادم فقط في Vite بدون حدود API منفصلة. الافتراضي Lovable هو عميل ثقيل؛ يجب عليك إضافة مسارات API للعمليات الحساسة.- GitHub sync can auto-commit without review. إذا قام Lovable بمزامنة التغييرات مرة أخرى إلى GitHub، فتأكد من عدم تشغيل سير العمل تلقائيًا بدون موافقتك. وإلا، فقد يصل التحديث الضار إلى المستوى الرئيسي.
- Static-host headers are a different beast than middleware. Vercel، وNetlify، وCloudflare تتعامل جميع الصفحات مع الرؤوس بشكل مختلف. إذا قمت بتبديل المضيفين، فأعد التحقق من تطبيق تكوين الرأس الخاص بك - فقد لا يعطيك النظام الأساسي خطأ إذا كان الرأس غير مدعوم.
الخطوات التالية
قم بمراجعة general vibe coding security checklist للحصول على 51 عنصرًا متعدد الأدوات. ثم راجع step-by-step hardening للحصول على أنماط أعمق في CSP وRLS والمصادقة.
