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.

Rahasia dan kunci API (5 item)

Integrasi pasar Lovable dan pembangunan Vite dapat membocorkan env vars ke dalam bundel klien jika tidak hati-hati.

  1. PRE β€” Audit import.meta.env references. Vite mengekspos semua var yang diawali VITE_ sebagai import.meta.env.VITE_* di klien. Jangan pernah menggunakan VITE_SUPABASE_SERVICE_KEY atau VITE_STRIPE_SECRET. Rutekan melalui titik akhir khusus server saja.
  2. Integrasi PRE β€” Replace Lovable marketplace test keys with live restricted keys. Lovable Stripe / Kirim ulang / dll. terkadang dikirimkan dengan kunci sk_test_* atau pk_test_*. Sebelum ditayangkan, tukarkan dengan kunci terbatas langsung yang membatasi kerusakan jika disusupi.
  3. PRE β€” Check the .env file is not committed. Lovable membuat perancah file .env dengan kunci integrasi. Jalankan git ls-files .env. Jika terlacak, segera hapus: git rm --cached .env dan tambahkan ke .gitignore.
  4. PRE β€” Verify GitHub sync doesn't expose service keys. Jika Lovable disinkronkan ke GitHub, konfirmasikan alur kerja Tindakan GitHub atau pengaturan Vercel agar tidak menggemakan rahasia ke dalam log build. Periksa Tindakan Anda β†’ Alur kerja berjalan β†’ klik proses β†’ lihat apakah ada rahasia yang dicetak.
  5. POST β€” Run Secrets in JavaScript Bundles on the deployed app. Lovable Build Vite dapat membocorkan kunci ke import.meta.env. Pemindaian pasif akan menemukannya.

Kontrol akses basis data (5 item)

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 memungkinkan pengguna hanya membaca baris di mana user_id = auth.uid(). Lovable terkadang menghasilkan tabel tanpa kebijakan; Anda harus menambahkannya.
  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. Buka Supabase Studio pasca penerapan. Tombol RLS setiap tabel harus ON. Jika tidak, migrasi Anda tidak berlaku.
  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.

Otentikasi dan sesi (4 item)

Lovable autentikasinya adalah Supabase Auth. Risikonya terletak pada cara Lovable menyatukannya.

  1. PRE β€” Ensure all API routes use getUser(), not getSession(). getSession() membaca cookie yang belum diverifikasi; getUser() memvalidasi dengan Supabase. Cari getSession() di API penangan dan gantikan.
  2. PRE β€” Check Lovable's generated auth handlers for token expiry. Token tautan ajaib memerlukan masa berlaku yang diberlakukan oleh server. Standarnya adalah 1 jam β€” jangan timpa kecuali penting.
  3. PRE β€” Audit the sign-in redirect guard. Parameter kueri next harus dimulai dengan /, jangan pernah //. Jika tidak ada, tambahkan pelindung secara manual.
  4. POST β€” Test logout destroys the session. Masuk, keluar, periksa cookie (DevTools β†’ Aplikasi β†’ Cookie). Cookie sesi harus dihapus.

HTTP header dan CSP (3 item)

Perancah Vite Lovable tidak menambahkan CSP secara default. Host statis memerlukan konfigurasi header eksplisit.

  1. PRE β€” Add security headers via your host's config. Vercel: vercel.json headers susunan. Netlifikasi: _headers berkas. Sertakan CSP, HSTS, Opsi-Bingkai-X, Opsi-Jenis-Konten-X.
  2. PRE β€” CSP must not have 'unsafe-inline' in script-src. Gunakan nonce atau hash. Lovable Vite build akan bekerja dengan CSP yang ketat.
  3. POST β€” Run HTTP Security Headers on the deployed URL. Pemeriksaan ini melaporkan header yang hilang dan memberikan panduan perbaikan khusus platform.

Kebersihan penempatan (5 item)

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: Pengaturan β†’ Variabel Lingkungan β†’ cakupan masing-masing ke Produksi. Jangan pernah membagikan kunci pengujian Stripe dengan Pratinjau.
  2. DEPLOY β€” Verify build logs don't echo secrets. Periksa log build penyedia penerapan Anda. Jika ada rahasia yang tercetak, maka rahasia itu akan terbobol.
  3. DEPLOY β€” Add security headers to vercel.json or _headers. Untuk Vercel, gunakan konfigurasi headers. Untuk Netlify / Cloudflare, gunakan file _headers di direktori publik.
  4. POST β€” Test a Vercel Preview link in a private browser window. Pastikan CSP nonce segar pada setiap permintaan dan header ada.
  5. POST β€” Rotate any test key that ever shipped to production. Meskipun itu adalah kunci sk_test_*, putar kunci tersebut setelah Anda melihatnya dalam produksi.

Lovable - gotcha khusus (3 item)

Pola unik untuk perancah Lovable dan alur penerapan:

  1. import.meta.env is Vite-specific and all-or-nothing. Vite mengekspos VITE_* vars dalam bundel klien berdasarkan desain. Tidak ada konsep env khusus server di Vite tanpa batasan API yang terpisah. Lovable defaultnya adalah klien-berat; Anda harus menambahkan rute API untuk operasi sensitif.
  2. GitHub sync can auto-commit without review. Jika Lovable menyinkronkan perubahan kembali ke GitHub, pastikan alur kerja tidak diterapkan secara otomatis tanpa persetujuan Anda. Jika tidak, pembaruan berbahaya dapat masuk ke main.
  3. Halaman Static-host headers are a different beast than middleware. Vercel, Netlify, dan Cloudflare menangani header secara berbeda. Jika Anda berpindah host, periksa kembali apakah konfigurasi header Anda sudah diterapkan β€” platform mungkin tidak memberikan kesalahan jika header tidak didukung.

Langkah selanjutnya

Tinjau general vibe coding security checklist untuk 51 item lintas alat. Kemudian lihat step-by-step hardening untuk pola yang lebih mendalam di CSP, RLS, dan auth.

// scan your app

Cukup membaca. Saatnya temukan celah di aplikasimu.

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 tingkat β€” 3 pemindaian / bulan, tanpa kartu.
  • Pemindaian pasif terhadap URL apa pun β€” tidak memerlukan verifikasi domain.
  • Disetel untuk Cursor, Claude Code, Lovable, Bolt, v0, Replit.
  • Coding-agent prompts for code/config findings, plus operator steps for DNS/provider fixes.
Lovable security checklist: 25 items before launch Β· FixVibe