Is your Lovable app secure? Lovable security checks before launch
Lovable can ship a working app in an afternoon. Lovable security tools help, since every publish runs a quick scan, but the same speed that gets you a UI and a Supabase backend also skips the boring security work. Check these yourself before strangers use your app.
QUICK CHECKLIST
- RLS on every table your app uses
- No write policy that allows everyone (true)
- No secrets in VITE_ variables or frontend code
- Server-side checks for logged-in features
- Logged-out test with your own anon key
Why Lovable security matters
In March 2025, researcher Matt Palmer scanned 1,645 Lovable apps and found 303 exposed endpoints across 170 of them, about 10.3%, where Row Level Security was missing or too weak. That research led to CVE-2025-48757, which covers insufficient RLS in Lovable-generated apps through 2025-04-15. Lovable (listed as the Supplier on the CVE) disputes it: each customer is responsible for protecting their own app's data. The exposed endpoints were reachable either way.
What goes wrong
Most Lovable apps use Supabase. The public REST API ships with the anon key. When RLS is off or a policy is too open, an attacker can change a request, for example by adding ?select=*, and pull rows they shouldn't see. The pattern is the same one we cover in Supabase RLS mistakes: public endpoint + anon key + weak policies.
What Lovable's security scan covers
Lovable's docs describe a Quick scan that runs on every publish. It checks database rules (tables without RLS, rules that let everyone through), known vulnerable npm dependencies and exposed MCP servers. A Deep scan reviews your app code for access control, open endpoints, injection and leaked secrets, but you have to start it yourself. Lovable's own docs say these tools "cannot guarantee complete security". We compare the scan with an outside repo review in Lovable security scan vs Leakcade.
Lovable security checklist before you launch
Check RLS on every table
Open the Supabase dashboard and confirm RLS is enabled on every table your app uses.
Read each write policy
For update and delete, avoid
using (true), and for insert avoidwith check (true)or a check that only asks for a login, unless the table is meant to be writable by anyone. A policy that only checks for a login isn't enough either.Revoke grants anon doesn't need
Signed-out visitors should only reach the tables that are meant to be public.
Keep secrets out of the frontend
Search the client bundle and env files for service-role keys and API secrets. Lovable's docs say to keep them in Secrets and call them from Edge Functions.
VITE_values are public.Check sessions on the server
Confirm login-gated features check the session in an Edge Function or RLS, not only in the UI.
Test with your own anon key
Call the REST API with a broad
selectwhile signed out and see what comes back. Then go through the rest of the vibe coding security checklist.
Fix prompt you can paste
This app was built with Lovable and Supabase. Review every table and policy: enable RLS where it's missing, replace write policies that use (true) with ownership checks on auth.uid(), revoke anon grants that aren't needed, move any secrets out of the frontend into Edge Functions or server env, and list what I should re-test with the anon key while signed out.
Further reading
- Lovable docs: Security overview
- Lovable docs: Security best practices
- Matt Palmer: CVE-2025-48757
- Matt Palmer: Statement on CVE-2025-48757
- NVD: CVE-2025-48757
FAQ
Is Lovable secure?
The platform adds real safeguards: a scan on every publish, a Deep scan you can run, and Secrets for API keys. Whether your app is secure depends on its RLS policies and server checks, and Lovable says you're responsible for those.
Does Lovable's security scan catch everything?
No. Lovable's docs say the scans find common issues but can't guarantee complete security, and recommend a professional review for apps with sensitive data.
Where should I put API keys in a Lovable app?
In Lovable's Secrets, used from server-side functions. Anything with a VITE_ prefix ends up in the browser.
Is the Supabase anon key in my Lovable app a problem?
No, it's meant to be public. It becomes a problem when RLS is missing or too open, because then that key can read or change your tables.
Want a second pair of eyes?
We review your whole repo and write a fix prompt for every finding. $19, report within an hour.
Check my repoLeakcade is an automated check. It can miss vulnerabilities and is not a substitute for a professional security audit or pentest. Provided as is. You stay responsible for your code. Where the law allows, our liability is limited to what you paid ($19). Terms