For Supabase apps built with Lovable, Bolt or Replit Supabase apps · Lovable, Bolt, Replit

Can a stranger read your users' data?

See which attacks on your database work, tested on a private copy, and get the fix, in about a minute.

Run the free check

Free · No signup · Nothing leaves your browser

fix.sql
alter table profiles
  enable row level security;

create policy "own notes"
  on notes for select
  using (auth.uid() = user_id);

revoke execute on function
  get_all_emails() from anon;
Sample result · a demo notes app · 3 of 22 attacks

22 ways in.

The fix blocks all of them.

  • 3 critical
  • 5 high
Attack tried Before After fix
notesA visitor reads everyone's private notes Possible Blocked
profilesA user changes their own role to admin Possible Blocked
get_all_emails()Anyone downloads every user's email Possible Blocked
What we found
  • CriticalRow Level Security is off for profiles
  • HighEveryone can read every user's notes
  • Highget_all_emails() exposes your users table

What it catches

The holes AI builders leave open

These are the mistakes behind the real leaks. Every attack we report was actually tried on a private copy, not guessed from your settings.

Row Level Security off

Tables anyone can read

Your app's public key is visible in your website's code. If a table has no access rules, anyone holding that key can read, change or delete every row.

select * from profilesPossible
alter table profiles enable row level securityBlocked

Open rules

Users reading each other's data

A rule like using (true) lets every user see every other user's rows.

Role columns

Making yourself an admin

If users can edit their own profile, they can often change their own role too.

Billing tables

Free paid plans

Users who can write to subscriptions can give themselves the top plan.

Keys in your database

Secret keys inside database functions

A service_role or API key written into a database function sits in plain text in your database and its backups. We flag those. (This check doesn't see your app's code.)

Back doors

Views and functions that skip your rules

A view or database function can run with full permissions and hand out data your rules protect, like a helper that returns every user's email to anyone who asks.

How it works

Check your app in about a minute

You'll need your project's SQL editor: in the Supabase dashboard, or in Lovable under More → Cloud.

Supabase's Security Advisor says no issues? It reviews your settings. Lockstamp actually tries the attacks on a private copy. If any get through, you can hire us to fix them.

  • Read-only. The query reads your database's structure, never a row of your data.
  • Private. Everything runs in this browser tab. Nothing is uploaded or stored.
  • Proven. Every attack we report was actually tried on a private copy, before and after the fix.
  1. Step 1 Copy the query

    Then paste it into your SQL editor and press Run. In Supabase: SQL Editor → New query. On Lovable Cloud: More → Cloud → SQL editor.

  2. Step 2 Paste the result

    Click the single cell under snapshot, copy it (Ctrl+C, or ⌘C on a Mac), and paste it here.

    Keep your database setup in code? You can instead (supabase/migrations/*.sql).

  3. Step 3 Get the proof and the fix

    You'll see which of our attacks worked on the private copy, which ones the fix blocks, and (when it can be fixed automatically) a fix file to run.

Privacy

Your database never leaves this tab

The check uses a full Postgres database compiled to WebAssembly, running right here. It rebuilds your tables and access rules from the query result, tries the attacks, and throws the copy away. There's no server to send anything to.

FAQ

Questions people ask before running it

Is the query safe to run on my database?

Yes. It only reads your database's structure: tables, columns, access rules and functions. It doesn't read any rows, doesn't change anything, and doesn't need a password. You can read every line before you run it.

Does my data get uploaded anywhere?

No. The check runs inside this browser tab. What you paste is never sent to a server, and closing the tab deletes it.

Which apps does it work with?

Any app that uses Supabase for its database, including apps built with Lovable (on Lovable Cloud or your own Supabase), Bolt, Replit, v0 and Cursor.

What do I do with fix.sql?

Read it, then run it in the same SQL editor (or add it as a migration). Afterwards, try your app's main features while logged in as a normal user.

Will the fix break my app?

It changes who can see what, which is the point: a feature that showed other users' private data will stop doing that. Rules for data that might be meant to be public (like reviews or product listings) are left for you to decide.

What doesn't it check?

It doesn't look at your app's code or website for leaked keys, test your live site, or check your login settings or payment flow, and no tool can guarantee an app has no other weaknesses.

Find out before someone else does.

Free, about a minute, and nothing leaves your browser.

Run the free check