Hoppa till innehållet

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.

Kontrollera mitt Supabase-projekt

Gratis, utan registrering. Enbart läsning: inget i ditt projekt ändras.

  1. Anslut SupabaseGodkänn läsåtkomst på supabase.com.
  2. Vi kör 45 kontrollerÅtkomst och RLS, inloggning, lagring och funktioner, infrastruktur. Bara katalog och inställningar, aldrig dina rader.
  3. 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.

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ågaSecurity AdvisorDen här kontrollen
Var den körsI Supabase-dashboarden, ett projekt i tagetPå den här sidan, efter OAuth med enbart läsåtkomst, för projektet du väljer
Vad den läserDatabas-lintsSamma lints som en kontroll, plus auth, storage, Edge Functions, backuper och nätverksinställningar
Hur resultaten grupperasEfter lintEfter OWASP Top 10:2025, med de kategorier den inte kan kontrollera utpekade
Vad du får för att åtgärdaEn länk till lint-dokumentationenSQL eller dashboard-inställningen för varje fynd, och en prompt för din AI-agent
Vad du kan sparaListan i din dashboardEn PDF, eller en delningslänk som går ut efter 7 dagar

Täckning av OWASP Top 10:2025

KategoriKontrollerStatus
A01 Trasig åtkomstkontroll18Täckt
A02 Felaktig säkerhetskonfiguration9Täckt
A03 Brister i mjukvaruförsörjningskedjan2Delvis Bara Postgres-version och tillägg. npm-beroenden finns i ditt repository.
A04 Kryptografiska fel4Täckt
A05 Injektion1Täckt
A06 Osäker design0Kan inte kontrolleras Osäker design sitter i hur din app fungerar, inte i inställningar.
A07 Autentiseringsfel8Täckt
A08 Brister i integritet hos programvara eller data1Täckt
A09 Brister i säkerhetsloggning och larm2Täckt
A10 Felaktig hantering av undantagsfall0Kan inte kontrolleras Felhantering sitter i din appkod, som läsåtkomst aldrig ser.

Alla 45 kontroller

KontrollIDOWASPVärsta fall
RLS avstängt på exponerade tabellerrls_disabled_exposedA01Kritisk
Policyer som släpper in varje radpolicy_always_trueA01Hög
Policyer som litar på user metadatapolicy_uses_user_metadataA01Hög
Skrivpolicyer öppna för anonyma besökareanon_write_policiesA01Hög
Vyer som kringgår RLSviews_without_security_invokerA01Hög
Materialiserade vyer eller främmande tabeller i API:tmatviews_or_foreign_tables_exposedA01Medel
Security definer-funktioner som kan anropas från API:tsecurity_definer_executableA01Hög
Storage-policyer öppna för anonyma besökarestorage_objects_anon_policiesA01Hög
Publika storage-bucketspublic_bucketsA01Låg
Privata Realtime-kanaler utan skyddrealtime_messages_rlsA01Hög
Oanvända skrivbehörigheter för anonyma besökareanon_table_grants_writeA01Låg
Roller som kringgår RLSroles_bypass_rlsA01Hög
Åtkomstkolumner som inloggade användare kan ändraauthz_columns_writableA01Hög
Radera och infoga igen ändrar en skyddad kolumndelete_insert_bypassA01Hög
Onödiga tabellbehörigheter för inloggade användareauthenticated_table_grants_extraA01Låg
Standardbehörigheter som öppnar nya objekt för API:tdefault_privileges_api_rolesA01Låg
Security definer-funktioner som kontrollerar current_userdefiner_checks_current_userA01Medel
Policyer utan roll eller kommandopolicies_without_to_or_forA01Låg
Fynd från Supabase Security Advisoradvisor_lintsA02Hög
Extra scheman exponerade i Data APIextra_exposed_schemasA02Hög
Jokertecken i omdirigerings-URL:erredirect_wildcardsA02Medel
Redirect-URL:er över http eller till localhostinsecure_redirect_urlsA02Medel
Anonym inloggning påanonymous_signins_enabledA02Medel
CAPTCHA av för registrering och inloggningcaptcha_disabledA02Medel
Databasen är öppen för varje IP-adressnetwork_openA02Medel
Publika buckets utan uppladdningsgränserpublic_bucket_no_limitsA02Låg
Inget radtak för svar från Data APIpostgrest_max_rowsA02Medel
Postgres-uppgradering tillgängligpostgres_upgrade_availableA03Medel
Installerade tilläggextensions_listedA03Info
SSL tvingas inte på databasanslutningarssl_enforcement_offA04Medel
Åtkomsttoken giltiga längre än en timmejwt_expiry_longA04Medel
Kolumner som ser känsliga ut, läsbara av anonyma besökaresensitive_columns_exposedA04Hög
Vault-hemligheter som API-rollerna kan läsavault_secrets_exposedA04Kritisk
Dynamisk SQL byggd av strängardynamic_sql_concatA05Medel
Kort minsta lösenordslängdpassword_min_lengthA07Hög
Skydd mot läckta lösenord avleaked_password_protection_offA07Medel
E-postbekräftelse avemail_confirm_offA07Hög
Säker e-poständring avsecure_email_change_offA07Medel
Engångskoder giltiga längre än en timmeotp_expiry_longA07Medel
Ingen metod för flerfaktorsautentisering påmfa_unavailableA07Medel
Rotation av refresh-token avrefresh_token_rotation_offA07Medel
Lösenordsbyte utan ny autentiseringpassword_change_no_reauthA07Låg
Edge Functions utan JWT-verifieringedge_functions_without_jwtA08Låg
pgaudit är inte installeratpgaudit_missingA09Info
Inga backuper hittadesbackups_or_pitrA09Medel

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