Tjek dit Supabase-projekt mod 45 OWASP Top 10:2025-regler og mere
Forbind ét projekt med læseadgang, og få en bedømt rapport med en rettelse til hvert fund, lige på denne side.
Til teams, der bygger med Lovable, Bolt, Cursor eller v0 på Supabase. Gratis, uden tilmelding.
Gratis, uden tilmelding. Kun læseadgang: intet i dit projekt ændres.
- Forbind SupabaseGodkend læseadgang på supabase.com.
- Vi kører 45 tjekAdgang og RLS, login, storage og funktioner, infrastruktur. Kun katalog og indstillinger, aldrig dine rækker.
- Rapport og en prompt til din AI-agentEn rettelse til hvert fund plus en prompt, du indsætter i Cursor, Claude Code eller Lovable. Gemmes kun, hvis du deler den.
Indlæser dine Supabase-projekter…
Vælg et projekt at skanne
20 små bogstaver, som i supabase.com/dashboard/project/your-ref.
Bekræft, at du er et menneske
Det holder automatiske skanninger væk fra tjenesten.
Skanningslog
Hvad tjekket kan se
Vi læser
- Databasekatalog: tabeller, RLS-flag, politikker, rettigheder, views, funktioner, extensions, roller og hvem der må læse Vault
- Auth-indstillinger: regler for adgangskoder, e-mailbekræftelse, MFA, redirect-URL’er
- Storage: listen over buckets, hvilke der er offentlige, og deres grænser for størrelse og filtyper
- Edge Functions: listen og JWT-indstillingen for hver enkelt
- Projektindstillinger: Postgres-version, backups, SSL, netværksbegrænsninger, rækkeloft i Data API
Vi læser aldrig
- Rækker i dine tabeller
- API-nøgler og hemmeligheder: Supabase tager nogle med i svar om indstillinger, og scanningen kasserer dem ved ankomsten uden at gemme, logge eller vise dem
- Filer gemt i dine buckets
- Din app-kode og dit repository
En rapport gemmes kun, når du opretter et delingslink, og højst i 7 dage. Adgangen tilbagekaldes lige efter tjekket.
Hvad læseadgang ikke kan tjekke
- A06 Usikkert design og A10 Forkert håndtering af ekstraordinære forhold ligger i din app-kode, ikke i projektindstillinger.
- Frontend-afhængigheder (npm-delen af A03) og en service_role-nøgle, der er bundtet i frontend-kode. Tjek dit repository for dem.
- Adgangsregler, der kun findes i app-kode eller Edge Functions, som et tjek af plan = 'pro' i frontenden. Skanningen ser kun kolonner, som databasen selv bruger i politikker, funktioner og auth hooks, så et bestået tjek af skrivbare adgangskolonner betyder ikke, at de kolonner er sikre.
- Om én indlogget bruger kan læse en anden brugers rækker. Det kræver en test med to rigtige brugere: sådan tester du Supabase RLS
Supabase Security Advisor og dette tjek
| Spørgsmål | Security Advisor | Dette tjek |
|---|---|---|
| Hvor det kører | I Supabase-dashboardet, ét projekt ad gangen | På denne side, efter OAuth med læseadgang, for det projekt, du vælger |
| Hvad det læser | Database-lints | De samme lints som ét tjek, plus auth, storage, Edge Functions, backups og netværksindstillinger |
| Hvordan resultaterne grupperes | Efter lint | Efter OWASP Top 10:2025, med de kategorier, der ikke kan tjekkes, nævnt |
| Hvad du får til at rette det | Et link til lint-dokumentationen | SQL eller dashboard-indstillingen for hvert fund og en prompt til din AI-agent |
| Hvad du kan gemme | Listen i dit dashboard | En PDF eller et delingslink, der udløber efter 7 dage |
Dækning af OWASP Top 10:2025
| Kategori | Tjek | Status |
|---|---|---|
| A01 Brudt adgangskontrol | 18 | Dækket |
| A02 Sikkerhedsfejlkonfiguration | 9 | Dækket |
| A03 Fejl i softwarens forsyningskæde | 2 | Delvist Kun Postgres-version og extensions. npm-afhængigheder ligger i dit repository. |
| A04 Kryptografiske fejl | 4 | Dækket |
| A05 Injektion | 1 | Dækket |
| A06 Usikkert design | 0 | Kan ikke tjekkes Usikkert design ligger i, hvordan din app fungerer, ikke i indstillinger. |
| A07 Fejl i autentificering | 8 | Dækket |
| A08 Fejl i software- eller dataintegritet | 1 | Dækket |
| A09 Fejl i sikkerhedslogning og alarmering | 2 | Dækket |
| A10 Forkert håndtering af ekstraordinære forhold | 0 | Kan ikke tjekkes Fejlhåndtering ligger i din app-kode, som læseadgang aldrig ser. |
Alle 45 tjek
| Tjek | ID | OWASP | Værste tilfælde |
|---|---|---|---|
| RLS slået fra på eksponerede tabeller | rls_disabled_exposed | A01 | Kritisk |
| Politikker, der tillader alle rækker | policy_always_true | A01 | Høj |
| Politikker, der stoler på brugermetadata | policy_uses_user_metadata | A01 | Høj |
| Skrivepolitikker åbne for anonyme besøgende | anon_write_policies | A01 | Høj |
| Views, der omgår RLS | views_without_security_invoker | A01 | Høj |
| Materialized views eller foreign tables i API’et | matviews_or_foreign_tables_exposed | A01 | Middel |
| Security definer-funktioner, der kan kaldes fra API’et | security_definer_executable | A01 | Høj |
| Storage-politikker åbne for anonyme besøgende | storage_objects_anon_policies | A01 | Høj |
| Offentlige storage-buckets | public_buckets | A01 | Lav |
| Private Realtime-kanaler uden beskyttelse | realtime_messages_rls | A01 | Høj |
| Ubrugte skriverettigheder til anonyme besøgende | anon_table_grants_write | A01 | Lav |
| Roller, der omgår RLS | roles_bypass_rls | A01 | Høj |
| Adgangskolonner, som indloggede brugere kan ændre | authz_columns_writable | A01 | Høj |
| Slet og indsæt igen ændrer en beskyttet kolonne | delete_insert_bypass | A01 | Høj |
| Unødvendige tabelrettigheder for indloggede brugere | authenticated_table_grants_extra | A01 | Lav |
| Standardrettigheder, der åbner nye objekter for API’et | default_privileges_api_roles | A01 | Lav |
| Security definer-funktioner, der tjekker current_user | definer_checks_current_user | A01 | Middel |
| Politikker uden rolle eller kommando | policies_without_to_or_for | A01 | Lav |
| Fund fra Supabase Security Advisor | advisor_lints | A02 | Høj |
| Ekstra schemas eksponeret i Data API | extra_exposed_schemas | A02 | Høj |
| Jokertegn i redirect-URL’er | redirect_wildcards | A02 | Middel |
| Redirect-URL’er over http eller til localhost | insecure_redirect_urls | A02 | Middel |
| Anonym login slået til | anonymous_signins_enabled | A02 | Middel |
| CAPTCHA slået fra ved tilmelding og login | captcha_disabled | A02 | Middel |
| Database åben for alle IP-adresser | network_open | A02 | Middel |
| Offentlige buckets uden upload-grænser | public_bucket_no_limits | A02 | Lav |
| Intet rækkeloft på svar fra Data API | postgrest_max_rows | A02 | Middel |
| Postgres-opgradering tilgængelig | postgres_upgrade_available | A03 | Middel |
| Installerede extensions | extensions_listed | A03 | Info |
| SSL kræves ikke ved databaseforbindelser | ssl_enforcement_off | A04 | Middel |
| Adgangstokens gyldige i mere end en time | jwt_expiry_long | A04 | Middel |
| Følsomt udseende kolonner, som anonyme besøgende kan læse | sensitive_columns_exposed | A04 | Høj |
| Vault-hemmeligheder læsbare for API-roller | vault_secrets_exposed | A04 | Kritisk |
| Dynamisk SQL bygget af strenge | dynamic_sql_concat | A05 | Middel |
| Kort minimumslængde for adgangskoder | password_min_length | A07 | Høj |
| Beskyttelse mod lækkede adgangskoder slået fra | leaked_password_protection_off | A07 | Middel |
| E-mailbekræftelse slået fra | email_confirm_off | A07 | Høj |
| Sikker e-mailændring slået fra | secure_email_change_off | A07 | Middel |
| Engangskoder gyldige i mere end en time | otp_expiry_long | A07 | Middel |
| Ingen multifaktormetode slået til | mfa_unavailable | A07 | Middel |
| Rotation af refresh tokens slået fra | refresh_token_rotation_off | A07 | Middel |
| Skift af adgangskode uden ny godkendelse | password_change_no_reauth | A07 | Lav |
| Edge Functions uden JWT-verifikation | edge_functions_without_jwt | A08 | Lav |
| pgaudit er ikke installeret | pgaudit_missing | A09 | Info |
| Ingen backups fundet | backups_or_pitr | A09 | Middel |
Spørgsmål
Hvordan adskiller det sig fra Supabase Security Advisor?
Resultaterne fra Security Advisor er ét af tjekkene. Skanningen tilføjer auth-indstillinger, storage-politikker, Edge Functions, backups og netværksindstillinger, grupperer alt efter OWASP Top 10:2025 og giver en rettelse til hvert fund.
Er Supabase sikkert som standard?
Platformen vedligeholdes af Supabase, men adgangsreglerne er dine. En ny tabel oprettet med almindelig SQL har Row Level Security slået fra, og en politik skrevet som using (true) lader alle med anon-nøglen læse tabellen. Skanningen leder netop efter disse indstillinger.
Hvad betyder »RLS disabled«, og hvordan slår jeg det til?
Når RLS er slået fra på en tabel i et eksponeret schema, kan alle med din anon-nøgle læse hver eneste række via Data API. Slå det til med alter table public.your_table enable row level security; og tilføj derefter politikker for den adgang, du ønsker.
Er det sikkert, at min Supabase anon-nøgle ligger i browseren?
Ja, anon-nøglen (publishable) er beregnet til at være offentlig. Den kan kun det, som dine rettigheder og RLS-politikker tillader, og derfor tjekker skanningen dem. Nøglen service_role omgår RLS og må aldrig nå browseren.
Tjek dit eget projekt
Gratis og med læseadgang. Rapporten vises på denne side.
Tjek mit Supabase-projekt