YOUR LOGIN SCREEN ISN’T A DATABASE LOCK.

Is your Supabase app leaking user data?

Free check in 60 seconds. Only for apps you own.

SCROLL TO WITNESS AN EXPOSURE
EXAMPLE SCAN / FICTIONAL APP
$warden check acme-todo.lovable.app
Fetching public client bundle…
Found SUPABASE_ANON_KEY eyJhbGciOi••••••
Probing anonymous table access…
TABLEROWSANONYMOUS ACCESS
profiles12,408READABLE BY ANYONE
messages88,112READABLE BY ANYONE
orders3,201READABLE BY ANYONE
admin_notes—LOCKED

3 tables readable by anyone on the internet.

Now check yours ↓

ILLUSTRATION ONLY. Fake app. Invented counts. No real data accessed.

Your app. Your move.

PUBLIC ACCESS
SHOULD BE A CHOICE.
WARDEN / YOUR SELF-CHECKOWNERSHIP VERIFIED FIRST

No account. No access to your rows.Start with the URL in the terminal prompt above.HTTPS only. Use the exact hostname your homepage runs on.

Scans only run after you prove you own the site. We never read or store your data — only counts.

THE VIEW FROM THE OTHER SIDE

What anyone can see.

EXAMPLE / FICTIONAL TABLES + COUNTS
profilesmessagesorderspayments
106,721
FICTIONAL ROWS EXPOSED / ZERO ROWS RETRIEVED

This is what anyone with your URL can query.

RECONNAISSANCE / THE ATTACK SURFACE

Four ways in.
One check.

What we check: the public surface of your app, from the browser’s point of view.

Exposed keys

Secrets and Supabase credentials shipped in public client code. Public anon keys are expected; privileged secrets aren’t.

Readable tables

Tables that let anonymous visitors through. We check access using counts, without retrieving the rows.

Public buckets

Supabase storage buckets exposed through your public app. Know which doors are open.

Missing headers

Browser security headers missing from your homepage. The guardrails your users’ browsers rely on.

HOW IT WORKS / AUTHORIZED ACCESS ONLY

Take back control.

01 → 02 → 03
YOUR APP. YOUR CONTROL.

01INPUT / YOUR LIVE APP

Paste.
Don’t guess.

Your live app URL. Built with Lovable, Cursor, Bolt, or code you wrote yourself.

02VERIFY / PERMISSION FIRST

Prove
it’s yours.

Publish a meta tag or a small verification file. No scan runs until ownership is verified.

03REPORT / KNOW WHAT’S OPEN

See it.
Then seal it.

Get your free exposure report. If something’s open, unlock prompts to help you fix it.

WHAT WE NEVER DO / THE RULES OF ENGAGEMENT

Find the breach.
Leave the
data alone.

We check anonymous access without retrieving the records behind it. Your users’ data stays where it belongs.

A focused exposure check. A clear boundary.

WARDEN / TERMINAL RECEIPT

The damage?

ONE APP.
ONE CLEAR ANSWER.

Exposure report

$0

Ownership verification. Findings. Severity report.

Fix prompts

$79

One-time. Tailored to your findings. Ready for your coding tool, with SQL templates where relevant.

CHECK FIRST. UNLOCK IN YOUR REPORT.

HELP / READ BEFORE RUNNING

Questions
in the queue.

Isn’t the Supabase anon key meant to be public?

Yes. An anon key in browser code is expected. The important question is what it lets an anonymous visitor access. Warden checks access and flags privileged secrets separately.

Will you read my users’ data?

No. Table checks request counts, never rows. Warden does not read or store your database records. You must prove ownership before any scan runs.

Does a clean report mean my app is secure?

No. This is a focused check of public client code, anonymous access, public buckets, and homepage headers. It does not replace a full security review. Scan notes explain checks that could not be completed.

What do I get for $79?

Fix prompts tailored to the findings in your report, ready to paste into your coding tool, with SQL templates where relevant. It is a one-time purchase. You review and apply the changes.