You're logged in. You change the id in the address bar to someone else's. Do you see their order?

orders.idowneritemtotal
101aliceRunning shoes$89
102bobDesk lamp$34
103aliceHeadphones$149
104carolCoffee grinder$59
105bobMonitor arm$72

RLS is off, so every row is readable with the same public key your app sends to every browser — including Carol's, and she never logged in here. This is the exact state the Moltbook and Lovable incidents were found in.

If yes, the app authenticated you but never authorized you. Those are two different questions.

Supabase draws the line in two sentences: "Authentication means checking that a user is who they say they are." And: "Authorization means checking what resources a user is allowed to access."

Two different questions

The question

Authentication
Who are you?
Authorization
What are you allowed to touch?

When

Authentication
Once, at login
Authorization
On every request

Example

Authentication
Password or Sign in with Google
Authorization
You may read your orders, not Ben's

What enforces it

Authentication
The login system
Authorization
Rules like Row Level Security

The classic bug lives in the gap: a correctly logged-in user changes a record's id and reads someone else's data. OWASP calls this broken object level authorization, and it's consistently one of the most common API weaknesses. Note that authentication worked perfectly; authorization was simply never checked.

On a Supabase-style app, the fix is the toggle above. Supabase: "Use RLS policies to authorize data access from the client." A Row Level Security policy adds a filter to every query so a request only ever returns rows the asker is allowed to see.

OWASP's two guiding habits: grant "only the minimum privileges necessary" (least privilege), and "deny access by default", so a resource is locked unless a rule explicitly opens it. The Moltbook lesson is what happens when neither is true.

Try it with the rules off. In the sandbox, flip Row Level Security off and, while logged in as Ana, read Ben's order by asking for it. You were authenticated the whole time. Turn RLS on and the same request returns only your own rows.

Check yourself

0/4 got it

Saved on this device only. No account, no streaks.