Supabase
Security FAQ

Is Supabase safe for production?

Get instant answers about your app's security.

Short Answer

Supabase apps run in production — but Public keys are expected. Private data should stay private. is the cautionary tale. The platform's suitability depends entirely on whether you've closed the same gap that caused real apps to leak data. Pre-scan, no; post-scan with findings fixed, yes.

Detailed Answer

What the track record shows

An anon or publishable key is not a secret. Table grants and RLS policies control what clients can access. A service_role or secret key must stay server-side. A successful request alone does not prove that a row could be changed or deleted. "Is Supabase safe for production" is a concrete question for Supabase because we have concrete evidence — the answer is "only after the incident pattern is verified closed."

Production readiness checklist for Supabase

Not a generic checklist — this is what fails in Supabase apps specifically and therefore what production readiness actually requires:

  1. **Database Access** — Checks discovered tables for data accessible to public clients. Read results do not establish whether inserts, updates or deletes are allowed.

2. **Service Key Exposure** — Scans for service_role keys that should never be in client-side code.

3. **Storage and API Exposure** — Checks discovered storage and API surfaces for observable exposure. Coverage depends on what the deployed app reveals and the enabled tests.

4. **Auth Configuration** — Checks observable auth behavior, with supported authenticated checks when you supply a test login. This is not a full review of dashboard settings.

5. **RLS on every table** — Run `select tablename, rowsecurity from pg_tables where schemaname='public'` — any row with `rowsecurity=false` is a production blocker.

Production blockers (must be resolved before launch)

  • Tables Without RLS — ALTER TABLE name ENABLE ROW LEVEL SECURITY; on every table.
  • Service Role Key Exposure — Never use service_role in frontend. Keep it server-side only. Rotate if exposed.

Each item here has been observed to cause data exposure in Supabase apps. Shipping to real users without closing these is not a risk calculation — it's a breach waiting.

Go/no-go signal

Run a vas scan. Zero critical + zero high findings = go. Any critical = absolute no-go. Any high = case-by-case depending on what data the app touches (a portfolio site ≠ a fintech app). This is a more reliable signal than "does it feel ready?" because feelings don't account for tables without rls.

Security Research & Statistics

10.3%

of Lovable applications (170 out of 1,645) had exposed user data in the CVE-2025-48757 incident

Source: CVE-2025-48757 security advisory

91%

of data breaches involve databases with misconfigured access controls

Source: Verizon Data Breach Investigations Report

4.45 million USD

average cost of a data breach in 2023

Source: IBM Cost of a Data Breach Report 2023

Expert Perspectives

“Vibe coding your way to a production codebase is clearly risky. Most of the work we do as software engineers involves evolving existing systems, where the quality and understandability of the underlying code is crucial.”

Simon Willison, Security Researcher, Django Co-creator

“The problem with AI-generated code isn't that it doesn't work - it's that it works just well enough to ship, but contains subtle security flaws that are hard to spot.”

Security Research Community, Collective wisdom from security researchers

Check Your Supabase App's Security

vas scans for all the security issues mentioned above. Run your first scan free to see your security score and every issue count in minutes. Unlock every finding with a copy-paste fix from $19/month.

Run your first scan free

More Questions About This Topic

Can Supabase apps scale for production workloads?

Performance scaling is a different question from security scaling. Supabase's underlying infrastructure (supabase) handles substantial traffic. The scaling concern is that security issues compound at scale: a missing Row Level Security (RLS) policies entry exposes 100 records at a small app, 100,000,000 at a large one. Rate-limit gaps at scale become DoS amplifiers. Resolve the findings above before scaling, not after.

Do Supabase apps meet SOC 2 or HIPAA requirements?

Not by default — and the platform's own SOC 2 status doesn't transfer. Compliance is app-level: you need audit logging on sensitive reads/writes, data encryption for PHI/PII fields beyond the default, access reviews, and documented incident response. Supabase apps can meet SOC 2/HIPAA, but Supabase doesn't ship you there — a security scan plus targeted compliance work does.

What's the single most important thing to do before launching a Supabase app?

Verify that you're not repeating Public keys are expected. Private data should stay private.. That exact vulnerability pattern keeps showing up in new Supabase apps because it's an easy mistake to make and platforms don't block it by default. Run a vas scan — if it comes back without the pattern, you've cleared the highest-value pre-launch check.