FixVibe

// 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.

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

Lovable'ın pazar entegrasyonları ve Vite yapısı, dikkatli olunmadığı takdirde env değişkenlerini istemci paketine sızdırabilir.

  1. PRE — Audit import.meta.env references. Vite, istemcide tüm VITE_ öneki değişkenlerini import.meta.env.VITE_* olarak gösterir. Asla VITE_SUPABASE_SERVICE_KEY veya VITE_STRIPE_SECRET kullanmayın. Bunun yerine yalnızca sunucuya yönelik bir uç nokta üzerinden yönlendirin.
  2. PRE — Replace Lovable marketplace test keys with live restricted keys. Lovable'nin Stripe / Yeniden Gönder / vb. entegrasyonları bazen sk_test_* veya pk_test_* tuşlarıyla birlikte gönderilir. Yayına geçmeden önce bunları, tehlikeye atıldığında hasarı sınırlayan canlı kısıtlı anahtarlarla değiştirin.
  3. PRE — Check the .env file is not committed. Lovable, entegrasyon anahtarlarına sahip bir .env dosyasını oluşturur. git ls-files .env komutunu çalıştırın. Takip ediliyorsa hemen kaldırın: git rm --cached .env ve .gitignore'ye ekleyin.
  4. PRE — Verify GitHub sync doesn't expose service keys. Lovable, GitHub ile eşitlenirse, GitHub Eylemler iş akışının veya Vercel ayarlarının gizli dizileri derleme günlüklerine yansıtmadığını onaylayın. Eylemlerinizi kontrol edin → İş akışı çalıştırmaları → bir çalıştırmayı tıklayın → herhangi bir gizli bilginin yazdırılıp yazdırılmadığına bakın.
  5. POST — Run Secrets in JavaScript Bundles on the deployed app. Lovable'nin Vite yapısı, anahtarları import.meta.env'ye sızdırabilir. Pasif bir tarama onları bulacaktır.

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

Every table Lovable creates needs RLS enabled and tightened before production.

  1. 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.
  2. PRE — Write explicit policies per table and role. Minimum: SELECT kullanıcının yalnızca user_id = auth.uid() olduğu satırları okumasına izin verir. Lovable bazen ilkeleri olmayan tablolar oluşturur; bunları eklemelisiniz.
  3. 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 to auth.uid(). (FORCE ROW LEVEL SECURITY only affects the table owner; it does not fix an open policy.)
  4. DEPLOY — Re-verify RLS is enforced after deploy. Dağıtım sonrası Supabase Studio'yu açın. Her tablonun RLS geçişi ON olmalıdır. Değilse, taşıma işleminiz geçerli olmamıştır.
  5. 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.

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

Lovable'nin yetkilendirmesi: Supabase Yetkilendirme. Risk, Lovable'nin bunları nasıl birbirine bağladığıyla ilgilidir.

  1. PRE — Ensure all API routes use getUser(), not getSession(). getSession() doğrulanmamış bir çerezi okur; getUser(), Supabase ile doğrulanır. API işleyicilerinde getSession() öğesini arayın ve değiştirin.
  2. PRE — Check Lovable's generated auth handlers for token expiry. Magic-link belirteçlerinin sunucu tarafından zorunlu kılınan geçerlilik süresinin sona ermesi gerekir. Varsayılan 1 saattir; gerekli olmadıkça geçersiz kılmayın.
  3. PRE — Audit the sign-in redirect guard. next sorgu parametresi / ile başlamalıdır, asla // ile başlamamalıdır. Eksikse korumayı manuel olarak ekleyin.
  4. POST — Test logout destroys 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)

Lovable'nin Vite iskelesi varsayılan olarak CSP eklemez. Statik ana bilgisayarlar açık başlık yapılandırması gerektirir.

  1. PRE — Add security headers via your host's config. Vercel: vercel.json headers dizisi. Netlify: _headers dosyası. CSP, HSTS, X-Frame-Options, X-Content-Type-Options'ı ekleyin.
  2. PRE — CSP must not have 'unsafe-inline' in script-src. Nonce'ları veya karmaları kullanın. Lovable'nin Vite yapısı katı CSP ile çalışacaktır.
  3. POST — Run HTTP Security Headers on the deployed URL. Denetim, eksik başlıkları bildirir ve platforma özel düzeltme kılavuzu sağlar.

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

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.

  1. DEPLOY — Scope env vars to Production only. Vercel: Ayarlar → Ortam Değişkenleri → her birini Prodüksiyon kapsamına alın. Stripe test anahtarlarını asla Önizleme ile paylaşmayın.
  2. DEPLOY — Verify build logs don't echo secrets. Dağıtım sağlayıcınızın derleme günlüklerini kontrol edin. Herhangi bir sır basılırsa, tehlikeye girer.
  3. DEPLOY — Add security headers to vercel.json or _headers. Vercel için headers yapılandırmasını kullanın. Netlify / Cloudflare için genel dizindeki _headers dosyasını kullanın.
  4. POST — Test a Vercel Preview link in a private browser window. Her istekte CSP nonce'ın güncel olduğundan ve başlıkların mevcut olduğundan emin olun.
  5. POST — Rotate any test key that ever shipped to production. sk_test_* tuşu olsa bile, onu üretimde gördükten sonra döndürün.

Lovable'ye özel kazanımlar (3 öğe)

Lovable'nin iskele ve dağıtım akışına özgü modeller:

  1. import.meta.env is Vite-specific and all-or-nothing. Vite, istemci paketindeki VITE_* değişkenlerini tasarım gereği ortaya çıkarır. Vite'ta ayrı bir API sınırı olmayan, yalnızca sunucuya özel bir env konsepti yoktur. Lovable'nin varsayılanı istemci ağırlıklıdır; hassas işlemler için API rotaları eklemelisiniz.
  2. GitHub sync can auto-commit without review. Lovable senkronizasyonu tekrar GitHub olarak değişirse, iş akışının sizin onayınız olmadan otomatik olarak ilerlemediğini doğrulayın. Aksi takdirde, kötü amaçlı bir güncelleme ana sayfaya gelebilir.
  3. Static-host headers are a different beast than middleware. Vercel, Netlify ve Cloudflare Sayfalarının tümü başlıkları farklı şekilde işler. Ana bilgisayarları değiştirirseniz başlık yapılandırmanızın uygulandığını yeniden kontrol edin; başlık desteklenmiyorsa platform size hata vermeyebilir.

Sonraki adımlar

51 çapraz araç öğesi için general vibe coding security checklist'yi inceleyin. Daha sonra CSP, RLS ve kimlik doğrulama hakkında daha derin modeller için step-by-step hardening'ye bakın.

// 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.
Lovable security checklist: 25 items before launch · FixVibe