Skip to content

Scan rule · RSC-SEC-068

Edge function without JWT verification

SecuritySeverity: HighCWE-306OWASP A01:2021

Finds `verify_jwt = false` in `supabase/config.toml` — the server function is callable without signing in.

Why this matters

Supabase verifies the bearer token before an edge function even starts. With `verify_jwt = false` that barrier is gone: the endpoint is callable by anyone on the internet, with no account and no sign-in.

The setting almost always enters a project for a legitimate reason — a payment or mail webhook cannot send a user token. The mistake is not disabling it, but what is missing afterwards: verifying the caller yourself.

Fix: keep verification on for user-facing functions. For webhooks, verify the provider's signature inside the function (Stripe, GitHub and others send a header for this) and additionally check that the call belongs to an expected operation.

Scan tier

Repo access (deep scan)

How to fix it

Keep verification on; for webhooks, verify the sender's signature inside the function instead.

Scan your own app for free