Skip to main content
VTechFusion Technologies
Building With Supabase or Firebase? The Row-Level Security Checklist Before You Launch
InsightsBlogEngineering
Engineering6 min readSeptember 25, 2026

Building With Supabase or Firebase? The Row-Level Security Checklist Before You Launch

VT

VTechFusion Team

VTechFusion Technologies

UpGuard's research into 16,326 exposed Supabase databases is a reminder that the fastest way to build an app is also the fastest way to leak data. Backend-as-a-service platforms let the browser talk to the database directly — which is only safe if the database itself enforces who can see what.

Why This Keeps Happening

With platforms like Supabase, the public API key ships in your front-end code by design. Security comes from row-level security (RLS) policies on each table. Skip them, and anyone with the key — which is everyone who opens your site — can read the table. AI app builders make it easy to create tables quickly; they don't always make it obvious that each one needs a policy.

The Pre-Launch Checklist

  • Enable row-level security on every table, including ones you think are unimportant.
  • Write explicit policies: users read and write only their own rows; admin-only tables have no public access at all.
  • Never put the service-role or admin key in front-end code, environment files committed to Git, or client bundles.
  • Never store plaintext passwords — use the platform's authentication, which hashes them.
  • Check storage buckets too: files have their own access rules separate from tables.
  • Test as an anonymous user: open the API with only the public key and try to read every table. Anything that returns data is exposed.

Test It, Don't Assume It

The single most valuable step is the last one. Make the anonymous-access test part of your release process, so a new table added next month doesn't quietly reopen the problem.

AI-Built Apps Need a Human Review

AI tools are good at generating working features and bad at noticing what's missing. Before any app holds customer data, have someone who understands the security model review access rules, keys and data storage. A few hours of review is far cheaper than a breach notice.

Filed under:Engineering
All Articles

Frequently Asked Questions

Is Supabase insecure?

No. The exposures came from customers not enabling row-level security. With RLS policies on every table, the public key only allows what the policies permit.

What is row-level security?

Database rules that decide which rows each user can read or change, enforced by the database itself rather than by your front-end code.

How can I check if my database is exposed?

Query your API using only the public key, as an anonymous user, and try to read every table and storage bucket. Anything returned is publicly visible.

Enjoyed this article?

Get new articles delivered to your inbox — no spam, unsubscribe anytime.

Start Today

Ready to Build Something Great?

Let's turn your idea into a product. Book a free 30-minute discovery call with our team — no commitment, just clarity.