// 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.
- PRE — Audit
import.meta.envreferences. Vite, istemcide tümVITE_öneki değişkenleriniimport.meta.env.VITE_*olarak gösterir. AslaVITE_SUPABASE_SERVICE_KEYveyaVITE_STRIPE_SECRETkullanmayın. Bunun yerine yalnızca sunucuya yönelik bir uç nokta üzerinden yönlendirin. - PRE — Replace Lovable marketplace test keys with live restricted keys. Lovable'nin Stripe / Yeniden Gönder / vb. entegrasyonları bazen
sk_test_*veyapk_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. - PRE — Check the
.envfile is not committed. Lovable, entegrasyon anahtarlarına sahip bir.envdosyasını oluşturur.git ls-files .envkomutunu çalıştırın. Takip ediliyorsa hemen kaldırın:git rm --cached .envve.gitignore'ye ekleyin. - 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.
- 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.
- 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. 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. - 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. 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.
- 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.
- PRE — Ensure all API routes use
getUser(), notgetSession().getSession()doğrulanmamış bir çerezi okur;getUser(), Supabase ile doğrulanır. API işleyicilerindegetSession()öğesini arayın ve değiştirin. - 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.
- PRE — Audit the sign-in redirect guard.
nextsorgu parametresi/ile başlamalıdır, asla//ile başlamamalıdır. Eksikse korumayı manuel olarak ekleyin. - 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.
- PRE — Add security headers via your host's config. Vercel:
vercel.jsonheadersdizisi. Netlify:_headersdosyası. CSP, HSTS, X-Frame-Options, X-Content-Type-Options'ı ekleyin. - PRE — CSP must not have
'unsafe-inline'inscript-src. Nonce'ları veya karmaları kullanın. Lovable'nin Vite yapısı katı CSP ile çalışacaktır. - 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.
- 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.
- 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.
- DEPLOY — Add security headers to
vercel.jsonor_headers. Vercel içinheadersyapılandırmasını kullanın. Netlify / Cloudflare için genel dizindeki_headersdosyasını kullanın. - 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.
- 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:
import.meta.envis Vite-specific and all-or-nothing. Vite, istemci paketindekiVITE_*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.- 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.
- 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.
