Zum Inhalt springen

Prüfen Sie Ihr Supabase-Projekt gegen 45 Regeln der OWASP Top 10:2025 und mehr

Verbinden Sie ein Projekt mit reinem Lesezugriff und erhalten Sie direkt auf dieser Seite einen bewerteten Bericht mit der Lösung für jeden Fund.

Für Teams, die mit Lovable, Bolt, Cursor oder v0 auf Supabase bauen. Kostenlos, ohne Anmeldung.

Mein Supabase-Projekt prüfen

Kostenlos, ohne Anmeldung. Nur Lesezugriff: In Ihrem Projekt wird nichts verändert.

  1. Supabase verbindenBestätigen Sie den Lesezugriff auf supabase.com.
  2. Wir führen 45 Prüfungen ausZugriff und RLS, Anmeldung, Storage und Funktionen, Infrastruktur. Nur Katalog und Einstellungen, nie Ihre Zeilen.
  3. Bericht und ein Prompt für Ihren KI-AgentenEine Lösung für jeden Fund und dazu ein Prompt, den Sie in Cursor, Claude Code oder Lovable einfügen. Gespeichert nur, wenn Sie ihn teilen.

Was die Prüfung sehen kann

Wir lesen

  • Datenbankkatalog: Tabellen, RLS-Flags, Policies, Grants, Views, Funktionen, Extensions, Rollen und wer den Vault lesen darf
  • Auth-Einstellungen: Passwortregeln, E-Mail-Bestätigung, MFA, Redirect-URLs
  • Storage: die Bucket-Liste, welche Buckets öffentlich sind und ihre Limits für Größe und Dateityp
  • Edge Functions: die Liste und die JWT-Einstellung jeder Funktion
  • Projekteinstellungen: Postgres-Version, Backups, SSL, Netzwerkbeschränkungen, Zeilenlimit der Data API

Wir lesen nie

  • Zeilen in Ihren Tabellen
  • API-Schlüssel und Secrets: Supabase liefert einige in Einstellungsantworten mit, und die Prüfung verwirft sie beim Eintreffen, ohne sie zu speichern, zu protokollieren oder anzuzeigen
  • Dateien in Ihren Buckets
  • Ihren App-Code und Ihr Repository

Ein Bericht wird nur gespeichert, wenn Sie einen Freigabelink erstellen, höchstens 7 Tage lang. Der Zugriff wird direkt nach der Prüfung widerrufen.

Was Lesezugriff nicht prüfen kann

  • A06 Unsicheres Design und A10 Fehlerhafter Umgang mit Ausnahmesituationen stecken in Ihrem App-Code, nicht in den Projekteinstellungen.
  • Frontend-Abhängigkeiten (der npm-Teil von A03) und ein im Frontend-Code gebündelter service_role-Key. Prüfen Sie dafür Ihr Repository.
  • Zugriffsregeln, die nur im App-Code oder in Edge Functions stehen, etwa eine Prüfung plan = 'pro' im Frontend. Der Scan sieht nur Spalten, die die Datenbank selbst in Policies, Funktionen und Auth-Hooks nutzt, daher heißt ein Bestehen bei beschreibbaren Zugriffsspalten nicht, dass diese Spalten sicher sind.
  • Ob ein angemeldeter Nutzer die Zeilen eines anderen Nutzers lesen kann. Das erfordert einen Test mit zwei echten Nutzern: Supabase RLS testen

Supabase Security Advisor und diese Prüfung

FrageSecurity AdvisorDiese Prüfung
Wo es läuftIm Supabase-Dashboard, jeweils ein ProjektAuf dieser Seite, nach OAuth mit reinem Lesezugriff, für das gewählte Projekt
Was gelesen wirdDatenbank-LintsDieselben Lints als eine Prüfung, dazu Auth, Storage, Edge Functions, Backups und Netzwerkeinstellungen
Wie Ergebnisse gruppiert werdenNach LintNach OWASP Top 10:2025, mit den Kategorien, die nicht prüfbar sind
Was Sie zur Behebung bekommenEinen Link zur Lint-DokumentationSQL oder die Dashboard-Einstellung pro Fund und einen Prompt für Ihren KI-Agenten
Was Sie aufbewahren könnenDie Liste in Ihrem DashboardEin PDF oder einen Freigabelink, der nach 7 Tagen abläuft

Abdeckung der OWASP Top 10:2025

KategoriePrüfungenStatus
A01 Fehlerhafte Zugriffskontrolle18Abgedeckt
A02 Sicherheitsrelevante Fehlkonfiguration9Abgedeckt
A03 Fehler in der Software-Lieferkette2Teilweise Nur Postgres-Version und Extensions. npm-Abhängigkeiten liegen in Ihrem Repository.
A04 Kryptografische Fehler4Abgedeckt
A05 Injection1Abgedeckt
A06 Unsicheres Design0Nicht prüfbar Unsicheres Design steckt in der Funktionsweise Ihrer App, nicht in Einstellungen.
A07 Authentifizierungsfehler8Abgedeckt
A08 Fehler bei der Software- oder Datenintegrität1Abgedeckt
A09 Fehler bei Protokollierung und Alarmierung2Abgedeckt
A10 Fehlerhafter Umgang mit Ausnahmesituationen0Nicht prüfbar Fehlerbehandlung steckt in Ihrem App-Code, den ein Lesezugriff nie sieht.

Alle 45 Prüfungen

PrüfungIDOWASPSchlimmster Fall
RLS bei exponierten Tabellen deaktiviertrls_disabled_exposedA01Kritisch
Policies, die jede Zeile erlaubenpolicy_always_trueA01Hoch
Policies, die user_metadata vertrauenpolicy_uses_user_metadataA01Hoch
Schreib-Policies für anonyme Besucher offenanon_write_policiesA01Hoch
Views, die RLS umgehenviews_without_security_invokerA01Hoch
Materialized Views oder Foreign Tables in der APImatviews_or_foreign_tables_exposedA01Mittel
Security-Definer-Funktionen, die über die API aufrufbar sindsecurity_definer_executableA01Hoch
Storage-Policies für anonyme Besucher offenstorage_objects_anon_policiesA01Hoch
Öffentliche Storage-Bucketspublic_bucketsA01Niedrig
Private Realtime-Kanäle ohne Schutzrealtime_messages_rlsA01Hoch
Ungenutzte Schreib-Grants für anonyme Besucheranon_table_grants_writeA01Niedrig
Rollen, die RLS umgehenroles_bypass_rlsA01Hoch
Zugriffsspalten, die angemeldete Nutzer ändern könnenauthz_columns_writableA01Hoch
Löschen und neu einfügen ändert eine geschützte Spaltedelete_insert_bypassA01Hoch
Unnötige Tabellenrechte für angemeldete Nutzerauthenticated_table_grants_extraA01Niedrig
Standardrechte, die neue Objekte für die API öffnendefault_privileges_api_rolesA01Niedrig
Security-Definer-Funktionen, die current_user prüfendefiner_checks_current_userA01Mittel
Policies ohne Rolle oder Befehlpolicies_without_to_or_forA01Niedrig
Funde des Supabase Security Advisorsadvisor_lintsA02Hoch
Zusätzliche Schemas in der Data API exponiertextra_exposed_schemasA02Hoch
Wildcards in Redirect-URLsredirect_wildcardsA02Mittel
Redirect-URLs über http oder auf localhostinsecure_redirect_urlsA02Mittel
Anonyme Anmeldungen aktivanonymous_signins_enabledA02Mittel
CAPTCHA bei Registrierung und Anmeldung auscaptcha_disabledA02Mittel
Datenbank für jede IP-Adresse offennetwork_openA02Mittel
Öffentliche Buckets ohne Upload-Limitspublic_bucket_no_limitsA02Niedrig
Kein Zeilenlimit für Antworten der Data APIpostgrest_max_rowsA02Mittel
Postgres-Upgrade verfügbarpostgres_upgrade_availableA03Mittel
Installierte Extensionsextensions_listedA03Info
SSL bei Datenbankverbindungen nicht erzwungenssl_enforcement_offA04Mittel
Access-Tokens länger als eine Stunde gültigjwt_expiry_longA04Mittel
Für anonyme Besucher lesbare Spalten mit sensiblen Namensensitive_columns_exposedA04Hoch
Vault-Secrets für API-Rollen lesbarvault_secrets_exposedA04Kritisch
Dynamisches SQL aus Stringsdynamic_sql_concatA05Mittel
Kurze Mindestlänge für Passwörterpassword_min_lengthA07Hoch
Schutz vor geleakten Passwörtern ausleaked_password_protection_offA07Mittel
E-Mail-Bestätigung ausemail_confirm_offA07Hoch
Sichere E-Mail-Änderung aussecure_email_change_offA07Mittel
Einmalcodes länger als eine Stunde gültigotp_expiry_longA07Mittel
Keine Multi-Faktor-Methode aktiviertmfa_unavailableA07Mittel
Rotation der Refresh-Tokens ausrefresh_token_rotation_offA07Mittel
Passwortänderung ohne erneute Anmeldungpassword_change_no_reauthA07Niedrig
Edge Functions ohne JWT-Prüfungedge_functions_without_jwtA08Niedrig
pgaudit nicht installiertpgaudit_missingA09Info
Keine Backups gefundenbackups_or_pitrA09Mittel

Fragen

Worin unterscheidet sich das vom Supabase Security Advisor?

Die Ergebnisse des Security Advisors sind eine der Prüfungen. Der Scan ergänzt Auth-Einstellungen, Storage-Policies, Edge Functions, Backups und Netzwerkeinstellungen, gruppiert alles nach OWASP Top 10:2025 und liefert für jeden Fund eine Lösung.

Ist Supabase standardmäßig sicher?

Die Plattform wird von Supabase betrieben, die Zugriffsregeln aber legen Sie fest. Eine mit reinem SQL angelegte Tabelle hat Row Level Security zunächst aus, und eine Policy mit using (true) lässt jeden mit dem anon key die Tabelle lesen. Genau solche Einstellungen sucht der Scan.

Was bedeutet „RLS disabled“, und wie aktiviere ich es?

Ist RLS bei einer Tabelle in einem exponierten Schema deaktiviert, kann jeder mit Ihrem anon key über die Data API jede Zeile lesen. Aktivieren Sie es mit alter table public.your_table enable row level security; und legen Sie danach Policies für den gewünschten Zugriff an.

Ist es unbedenklich, dass mein Supabase anon key im Browser liegt?

Ja, der anon-Key (publishable) ist dafür gedacht, öffentlich zu sein. Er kann nur tun, was Ihre Grants und RLS-Policies erlauben, weshalb der Scan genau diese prüft. Der service_role-Key umgeht RLS und darf nie in den Browser gelangen.

Prüfen Sie Ihr eigenes Projekt

Kostenlos und nur lesend. Der Bericht erscheint auf dieser Seite.

Mein Supabase-Projekt prüfen