Zkontrolujte projekt Supabase podle 45 pravidel OWASP Top 10:2025 a dalších
Připojte jeden projekt jen pro čtení a získejte ohodnocenou zprávu s opravou ke každému nálezu přímo na této stránce.
Pro týmy, které na Supabase stavějí s Lovable, Bolt, Cursor nebo v0. Zdarma, bez registrace.
Zdarma, bez registrace. Jen pro čtení: nic ve vašem projektu se nemění.
- Připojte SupabaseSchvalte přístup jen pro čtení na supabase.com.
- Spustíme 45 kontrolPřístup a RLS, přihlašování, úložiště a funkce, infrastruktura. Jen katalog a nastavení, nikdy vaše řádky.
- Zpráva a prompt pro vašeho AI agentaOprava ke každému nálezu a prompt, který vložíte do Cursoru, Claude Code nebo Lovable. Uloží se, jen když ji sdílíte.
Načítání vašich projektů Supabase…
Vyberte projekt ke skenu
20 malých písmen, jako v supabase.com/dashboard/project/your-ref.
Potvrďte, že nejste robot
Tím se služba chrání před automatickými skeny.
Záznam skenu
Co kontrola vidí
Čteme
- Katalog databáze: tabulky, příznaky RLS, politiky, oprávnění, pohledy, funkce, rozšíření, role a kdo smí číst Vault
- Nastavení autentizace: pravidla hesel, potvrzení e-mailu, MFA, přesměrovací URL
- Storage: seznam bucketů, které z nich jsou veřejné, a jejich limity velikosti a typů souborů
- Edge Functions: seznam a nastavení JWT u každé z nich
- Nastavení projektu: verze Postgresu, zálohy, SSL, omezení sítě, limit řádků v Data API
Nikdy nečteme
- Řádky ve vašich tabulkách
- API klíče a tajné údaje: Supabase některé vrací v odpovědích s nastavením a kontrola je při příchodu zahodí, aniž by je uložila, zaznamenala nebo zobrazila
- Soubory uložené ve vašich bucketech
- Kód vaší aplikace a repozitář
Zpráva se uloží jen tehdy, když vytvoříte odkaz ke sdílení, nejvýše na 7 dní. Udělený přístup se po kontrole hned odvolá.
Co přístup jen pro čtení zkontrolovat nemůže
- A06 Nezabezpečený návrh a A10 Nesprávné zacházení s výjimečnými stavy jsou v kódu vaší aplikace, ne v nastavení projektu.
- Závislosti frontendu (část A03 kolem npm) a klíč service_role zabalený do frontendového kódu. Ověřte je ve svém repozitáři.
- Pravidla přístupu, která existují jen v kódu aplikace nebo v Edge Functions, například kontrola plan = 'pro' ve frontendu. Sken vidí jen sloupce, které samotná databáze používá v politikách, funkcích a auth hoocích, takže úspěšný výsledek u zapisovatelných přístupových sloupců neznamená, že jsou tyto sloupce bezpečné.
- Zda jeden přihlášený uživatel může číst řádky jiného uživatele. K tomu je potřeba test se dvěma skutečnými uživateli: jak testovat RLS v Supabase
Supabase Security Advisor a tato kontrola
| Otázka | Security Advisor | Tato kontrola |
|---|---|---|
| Kde to běží | V dashboardu Supabase, vždy jeden projekt | Na této stránce, po OAuth jen pro čtení, pro projekt, který si vyberete |
| Co čte | Lintery databáze | Stejné lintery jako jedna kontrola, k tomu autentizaci, storage, Edge Functions, zálohy a nastavení sítě |
| Jak jsou výsledky seskupené | Podle linteru | Podle OWASP Top 10:2025, s uvedenými kategoriemi, které nelze zkontrolovat |
| Co dostanete k opravě | Odkaz na dokumentaci linteru | SQL nebo nastavení v dashboardu ke každému nálezu a prompt pro vašeho AI agenta |
| Co si můžete ponechat | Seznam ve vašem dashboardu | PDF nebo odkaz ke sdílení, který po 7 dnech vyprší |
Pokrytí OWASP Top 10:2025
| Kategorie | Kontroly | Stav |
|---|---|---|
| A01 Narušené řízení přístupu | 18 | Pokryto |
| A02 Chybná konfigurace zabezpečení | 9 | Pokryto |
| A03 Selhání v dodavatelském řetězci softwaru | 2 | Částečně Jen verze Postgresu a rozšíření. Závislosti z npm jsou ve vašem repozitáři. |
| A04 Selhání kryptografie | 4 | Pokryto |
| A05 Injektáž | 1 | Pokryto |
| A06 Nezabezpečený návrh | 0 | Nelze zkontrolovat Nezabezpečený návrh je v tom, jak aplikace funguje, ne v nastavení. |
| A07 Selhání autentizace | 8 | Pokryto |
| A08 Selhání integrity softwaru nebo dat | 1 | Pokryto |
| A09 Selhání logování a upozorňování na bezpečnostní události | 2 | Pokryto |
| A10 Nesprávné zacházení s výjimečnými stavy | 0 | Nelze zkontrolovat Ošetření chyb je v kódu vaší aplikace, který přístup jen pro čtení nevidí. |
Všech 45 kontrol
| Kontrola | ID | OWASP | Nejhorší případ |
|---|---|---|---|
| RLS vypnuté u zpřístupněných tabulek | rls_disabled_exposed | A01 | Kritická |
| Politiky, které povolují každý řádek | policy_always_true | A01 | Vysoká |
| Politiky, které věří metadatům uživatele | policy_uses_user_metadata | A01 | Vysoká |
| Politiky zápisu otevřené anonymním návštěvníkům | anon_write_policies | A01 | Vysoká |
| Pohledy, které obcházejí RLS | views_without_security_invoker | A01 | Vysoká |
| Materializované pohledy nebo cizí tabulky v API | matviews_or_foreign_tables_exposed | A01 | Střední |
| Funkce security definer volatelné z API | security_definer_executable | A01 | Vysoká |
| Politiky Storage otevřené anonymním návštěvníkům | storage_objects_anon_policies | A01 | Vysoká |
| Veřejné buckety ve Storage | public_buckets | A01 | Nízká |
| Soukromé kanály Realtime bez ochrany | realtime_messages_rls | A01 | Vysoká |
| Nepoužívaná oprávnění k zápisu pro anonymní návštěvníky | anon_table_grants_write | A01 | Nízká |
| Role, které obcházejí RLS | roles_bypass_rls | A01 | Vysoká |
| Přístupové sloupce, které přihlášení uživatelé mohou měnit | authz_columns_writable | A01 | Vysoká |
| Smazání a nové vložení změní chráněný sloupec | delete_insert_bypass | A01 | Vysoká |
| Zbytečná oprávnění k tabulkám pro přihlášené uživatele | authenticated_table_grants_extra | A01 | Nízká |
| Výchozí oprávnění, která otevírají nové objekty API | default_privileges_api_roles | A01 | Nízká |
| Funkce security definer, které kontrolují current_user | definer_checks_current_user | A01 | Střední |
| Politiky bez role nebo příkazu | policies_without_to_or_for | A01 | Nízká |
| Nálezy Supabase Security Advisoru | advisor_lints | A02 | Vysoká |
| Další schémata zpřístupněná v Data API | extra_exposed_schemas | A02 | Vysoká |
| Zástupné znaky v přesměrovacích URL | redirect_wildcards | A02 | Střední |
| Přesměrovací URL přes http nebo na localhost | insecure_redirect_urls | A02 | Střední |
| Anonymní přihlášení zapnuté | anonymous_signins_enabled | A02 | Střední |
| CAPTCHA vypnutá při registraci a přihlášení | captcha_disabled | A02 | Střední |
| Databáze otevřená všem IP adresám | network_open | A02 | Střední |
| Veřejné buckety bez limitů nahrávání | public_bucket_no_limits | A02 | Nízká |
| Žádný limit řádků v odpovědích Data API | postgrest_max_rows | A02 | Střední |
| K dispozici je upgrade Postgresu | postgres_upgrade_available | A03 | Střední |
| Nainstalovaná rozšíření | extensions_listed | A03 | Info |
| SSL se u připojení k databázi nevynucuje | ssl_enforcement_off | A04 | Střední |
| Přístupové tokeny platí déle než hodinu | jwt_expiry_long | A04 | Střední |
| Sloupce vypadající citlivě čitelné pro anonymní návštěvníky | sensitive_columns_exposed | A04 | Vysoká |
| Tajemství ve Vaultu čitelná pro role API | vault_secrets_exposed | A04 | Kritická |
| Dynamické SQL skládané z řetězců | dynamic_sql_concat | A05 | Střední |
| Krátká minimální délka hesla | password_min_length | A07 | Vysoká |
| Ochrana před uniklými hesly vypnutá | leaked_password_protection_off | A07 | Střední |
| Potvrzení e-mailu vypnuté | email_confirm_off | A07 | Vysoká |
| Zabezpečená změna e-mailu vypnutá | secure_email_change_off | A07 | Střední |
| Jednorázové kódy platí déle než hodinu | otp_expiry_long | A07 | Střední |
| Není zapnutá žádná metoda vícefaktorového ověření | mfa_unavailable | A07 | Střední |
| Rotace refresh tokenů vypnutá | refresh_token_rotation_off | A07 | Střední |
| Změna hesla bez opětovného ověření | password_change_no_reauth | A07 | Nízká |
| Edge Functions bez ověření JWT | edge_functions_without_jwt | A08 | Nízká |
| pgaudit není nainstalovaný | pgaudit_missing | A09 | Info |
| Nenalezeny žádné zálohy | backups_or_pitr | A09 | Střední |
Otázky
Čím se to liší od Supabase Security Advisoru?
Výsledky Security Advisoru jsou jednou z kontrol. Kontrola k nim přidává nastavení autentizace, politiky storage, Edge Functions, zálohy a nastavení sítě, všechno seskupuje podle OWASP Top 10:2025 a ke každému nálezu dává opravu.
Je Supabase ve výchozím stavu zabezpečený?
Platformu spravuje Supabase, ale pravidla přístupu jsou vaše. Nová tabulka vytvořená čistým SQL má Row Level Security vypnuté a politika zapsaná jako using (true) dovolí číst tabulku každému s klíčem anon. Kontrola hledá právě tato nastavení.
Co znamená „RLS disabled“ a jak ho zapnout?
Když je RLS u tabulky ve zpřístupněném schématu vypnuté, přečte přes Data API každý řádek kdokoli s klíčem anon. Zapnete ho příkazem alter table public.your_table enable row level security; a pak přidáte politiky pro přístup, který chcete.
Je v pořádku, že můj klíč anon od Supabase je v prohlížeči?
Ano, klíč anon (publishable) je určený k tomu, aby byl veřejný. Dokáže jen to, co dovolují vaše oprávnění a politiky RLS, a proto je kontrola ověřuje. Klíč service_role RLS obchází a nesmí se nikdy dostat do prohlížeče.
Zkontrolujte svůj projekt
Zdarma a jen pro čtení. Zpráva se zobrazí na této stránce.
Zkontrolovat můj projekt Supabase