Sayversayver.
All articles
Guide

How to Check If Your Supabase Is Secure

July 22, 2026 · 9 min read

Frequently asked questions

How do I check if my Supabase database is secure?

Run four checks: confirm Row Level Security is enabled on every table (not just created, but ON), verify each table has policies that scope rows to their owner, make sure your service-role key never appears in client-side code, and then actually test it by querying as an anonymous user to confirm you can't read protected data.

How do I know if Row Level Security is actually on?

In the Supabase dashboard, check the RLS status for each table under Authentication or the table editor — every table holding user data should show RLS enabled. A subtle trap: enabling RLS with no policies blocks everything, and adding an overly broad policy re-opens it. Verify both that RLS is on and that the policies are correctly scoped.

What's the difference between the anon key and the service-role key?

The anon key is safe to ship in the browser as long as RLS is enabled, because RLS enforces who can see what. The service-role key bypasses RLS entirely and has full admin access — it must live only on the server and never appear in client code or a public repo.

How can I test my Supabase access controls?

Try to read protected tables using only the public anon key (the same one in your app) with no logged-in user. If you get data back that should be private, your RLS is missing or misconfigured. Then repeat while logged in as one user, trying to read a different user's rows.

Can a scanner check my Supabase security for me?

A scan of your live app detects the outward signs — an exposed service-role key, anon-key data exposure, and related misconfigurations. Sayver's free scan flags these; for a full policy-by-policy review you also check the dashboard directly.