Kontrollera ditt Supabase-projekt mot 45 OWASP Top 10:2025-regler och mer
Anslut ett projekt med enbart läsåtkomst och få en betygsatt rapport med åtgärd för varje fynd, direkt på den här sidan.
För team som bygger med Lovable, Bolt, Cursor eller v0 på Supabase. Gratis, ingen registrering.
Gratis, utan registrering. Enbart läsning: inget i ditt projekt ändras.
- Anslut SupabaseGodkänn läsåtkomst på supabase.com.
- Vi kör 45 kontrollerÅtkomst och RLS, inloggning, lagring och funktioner, infrastruktur. Bara katalog och inställningar, aldrig dina rader.
- Rapport och en prompt till din AI-agentEn åtgärd för varje fynd plus en prompt du klistrar in i Cursor, Claude Code eller Lovable. Sparas bara om du delar den.
Laddar dina Supabase-projekt…
Välj ett projekt att skanna
20 gemena bokstäver, som i supabase.com/dashboard/project/din-ref.
Bekräfta att du är en människa
Det håller automatiska skanningar borta från tjänsten.
Skanningslogg
Vad kontrollen kan se
Vi läser
- Databaskatalogen: tabeller, RLS-flaggor, policyer, behörigheter, vyer, funktioner, tillägg, roller och vem som får läsa Vault
- Auth-inställningar: lösenordsregler, e-postbekräftelse, MFA, omdirigerings-URL:er
- Storage: listan över buckets, vilka som är publika och deras gränser för storlek och filtyp
- Edge Functions: listan och JWT-inställningen för varje funktion
- Projektinställningar: Postgres-version, backuper, SSL, nätverksbegränsningar, radtak i Data API
Vi läser aldrig
- Rader i dina tabeller
- API-nycklar och hemligheter: Supabase inkluderar några i inställningssvar, och kontrollen kasserar dem direkt när de kommer, utan att lagra, logga eller visa dem
- Filer som ligger i dina buckets
- Din appkod och ditt repository
En rapport sparas bara när du skapar en delningslänk, högst i 7 dagar. Åtkomsten återkallas direkt efter kontrollen.
Vad läsåtkomst inte kan kontrollera
- A06 Osäker design och A10 Felaktig hantering av undantagsfall sitter i din appkod, inte i projektinställningar.
- Frontend-beroenden (npm-delen av A03) och en service_role-nyckel som ligger i frontend-koden. Kontrollera ditt repository för dem.
- Åtkomstregler som bara finns i appkod eller Edge Functions, till exempel en kontroll av plan = 'pro' i frontend. Skanningen ser bara kolumner som databasen själv använder i policyer, funktioner och auth hooks, så ett godkänt resultat för skrivbara åtkomstkolumner betyder inte att de kolumnerna är säkra.
- Om en inloggad användare kan läsa en annan användares rader. Det kräver ett test med två riktiga användare: så testar du Supabase RLS
Supabase Security Advisor och den här kontrollen
| Fråga | Security Advisor | Den här kontrollen |
|---|---|---|
| Var den körs | I Supabase-dashboarden, ett projekt i taget | På den här sidan, efter OAuth med enbart läsåtkomst, för projektet du väljer |
| Vad den läser | Databas-lints | Samma lints som en kontroll, plus auth, storage, Edge Functions, backuper och nätverksinställningar |
| Hur resultaten grupperas | Efter lint | Efter OWASP Top 10:2025, med de kategorier den inte kan kontrollera utpekade |
| Vad du får för att åtgärda | En länk till lint-dokumentationen | SQL eller dashboard-inställningen för varje fynd, och en prompt för din AI-agent |
| Vad du kan spara | Listan i din dashboard | En PDF, eller en delningslänk som går ut efter 7 dagar |
Täckning av OWASP Top 10:2025
| Kategori | Kontroller | Status |
|---|---|---|
| A01 Trasig åtkomstkontroll | 18 | Täckt |
| A02 Felaktig säkerhetskonfiguration | 9 | Täckt |
| A03 Brister i mjukvaruförsörjningskedjan | 2 | Delvis Bara Postgres-version och tillägg. npm-beroenden finns i ditt repository. |
| A04 Kryptografiska fel | 4 | Täckt |
| A05 Injektion | 1 | Täckt |
| A06 Osäker design | 0 | Kan inte kontrolleras Osäker design sitter i hur din app fungerar, inte i inställningar. |
| A07 Autentiseringsfel | 8 | Täckt |
| A08 Brister i integritet hos programvara eller data | 1 | Täckt |
| A09 Brister i säkerhetsloggning och larm | 2 | Täckt |
| A10 Felaktig hantering av undantagsfall | 0 | Kan inte kontrolleras Felhantering sitter i din appkod, som läsåtkomst aldrig ser. |
Alla 45 kontroller
| Kontroll | ID | OWASP | Värsta fall |
|---|---|---|---|
| RLS avstängt på exponerade tabeller | rls_disabled_exposed | A01 | Kritisk |
| Policyer som släpper in varje rad | policy_always_true | A01 | Hög |
| Policyer som litar på user metadata | policy_uses_user_metadata | A01 | Hög |
| Skrivpolicyer öppna för anonyma besökare | anon_write_policies | A01 | Hög |
| Vyer som kringgår RLS | views_without_security_invoker | A01 | Hög |
| Materialiserade vyer eller främmande tabeller i API:t | matviews_or_foreign_tables_exposed | A01 | Medel |
| Security definer-funktioner som kan anropas från API:t | security_definer_executable | A01 | Hög |
| Storage-policyer öppna för anonyma besökare | storage_objects_anon_policies | A01 | Hög |
| Publika storage-buckets | public_buckets | A01 | Låg |
| Privata Realtime-kanaler utan skydd | realtime_messages_rls | A01 | Hög |
| Oanvända skrivbehörigheter för anonyma besökare | anon_table_grants_write | A01 | Låg |
| Roller som kringgår RLS | roles_bypass_rls | A01 | Hög |
| Åtkomstkolumner som inloggade användare kan ändra | authz_columns_writable | A01 | Hög |
| Radera och infoga igen ändrar en skyddad kolumn | delete_insert_bypass | A01 | Hög |
| Onödiga tabellbehörigheter för inloggade användare | authenticated_table_grants_extra | A01 | Låg |
| Standardbehörigheter som öppnar nya objekt för API:t | default_privileges_api_roles | A01 | Låg |
| Security definer-funktioner som kontrollerar current_user | definer_checks_current_user | A01 | Medel |
| Policyer utan roll eller kommando | policies_without_to_or_for | A01 | Låg |
| Fynd från Supabase Security Advisor | advisor_lints | A02 | Hög |
| Extra scheman exponerade i Data API | extra_exposed_schemas | A02 | Hög |
| Jokertecken i omdirigerings-URL:er | redirect_wildcards | A02 | Medel |
| Redirect-URL:er över http eller till localhost | insecure_redirect_urls | A02 | Medel |
| Anonym inloggning på | anonymous_signins_enabled | A02 | Medel |
| CAPTCHA av för registrering och inloggning | captcha_disabled | A02 | Medel |
| Databasen är öppen för varje IP-adress | network_open | A02 | Medel |
| Publika buckets utan uppladdningsgränser | public_bucket_no_limits | A02 | Låg |
| Inget radtak för svar från Data API | postgrest_max_rows | A02 | Medel |
| Postgres-uppgradering tillgänglig | postgres_upgrade_available | A03 | Medel |
| Installerade tillägg | extensions_listed | A03 | Info |
| SSL tvingas inte på databasanslutningar | ssl_enforcement_off | A04 | Medel |
| Åtkomsttoken giltiga längre än en timme | jwt_expiry_long | A04 | Medel |
| Kolumner som ser känsliga ut, läsbara av anonyma besökare | sensitive_columns_exposed | A04 | Hög |
| Vault-hemligheter som API-rollerna kan läsa | vault_secrets_exposed | A04 | Kritisk |
| Dynamisk SQL byggd av strängar | dynamic_sql_concat | A05 | Medel |
| Kort minsta lösenordslängd | password_min_length | A07 | Hög |
| Skydd mot läckta lösenord av | leaked_password_protection_off | A07 | Medel |
| E-postbekräftelse av | email_confirm_off | A07 | Hög |
| Säker e-poständring av | secure_email_change_off | A07 | Medel |
| Engångskoder giltiga längre än en timme | otp_expiry_long | A07 | Medel |
| Ingen metod för flerfaktorsautentisering på | mfa_unavailable | A07 | Medel |
| Rotation av refresh-token av | refresh_token_rotation_off | A07 | Medel |
| Lösenordsbyte utan ny autentisering | password_change_no_reauth | A07 | Låg |
| Edge Functions utan JWT-verifiering | edge_functions_without_jwt | A08 | Låg |
| pgaudit är inte installerat | pgaudit_missing | A09 | Info |
| Inga backuper hittades | backups_or_pitr | A09 | Medel |
Frågor
Hur skiljer det här sig från Supabase Security Advisor?
Resultaten från Security Advisor är en av kontrollerna. Skanningen lägger till auth-inställningar, storage-policyer, Edge Functions, backuper och nätverksinställningar, grupperar allt enligt OWASP Top 10:2025 och ger en åtgärd för varje fynd.
Är Supabase säkert som standard?
Plattformen underhålls av Supabase, men åtkomstreglerna är dina. En ny tabell som skapas med vanlig SQL har Row Level Security avstängt, och en policy skriven som using (true) låter vem som helst med anon-nyckeln läsa tabellen. Skanningen letar efter just de här inställningarna.
Vad betyder “RLS disabled” och hur slår jag på det?
Med RLS avstängt på en tabell i ett exponerat schema kan vem som helst med din anon-nyckel läsa varje rad via Data API. Slå på det med alter table public.din_tabell enable row level security; och lägg sedan till policyer för den åtkomst du vill ha.
Är det säkert att min Supabase anon-nyckel ligger i webbläsaren?
Ja, anon-nyckeln (publishable) är avsedd att vara publik. Den kan bara göra det som dina behörigheter och RLS-policyer tillåter, och därför kontrollerar skanningen just dem. Nyckeln service_role kringgår RLS och får aldrig hamna i webbläsaren.
Kontrollera ditt eget projekt
Gratis och enbart läsning. Rapporten visas på den här sidan.
Kontrollera mitt Supabase-projekt