← Wszystkie testy
BezpieczeństwoTypowa waga: Krytyczny

Wykrywacz otwartej bazy danych

Sprawdza, czy tabele Supabase lub baza Firebase Twojej strony dają się odczytać bez logowania.

Darmowe sprawdzenie na żywo

Znajdujemy Twój projekt Supabase lub Firebase w publicznym kodzie strony i tym samym kluczem publicznym, który dostają odwiedzający, sprawdzamy, czy tabele da się odczytać bez logowania. Liczymy tylko wiersze; nigdy nie pobieramy danych.

Sprawdź za darmo w swoim panelu

Darmowe konto, gotowe w 30 sekund. Liczymy tylko wiersze; nigdy nie pobieramy danych.

Co sprawdza

Ten skaner szuka w publicznym JavaScripcie Twojej strony adresu projektu Supabase lub bazy Realtime Database w Firebase oraz klucza publicznego, którego używa przeglądarka. Tym samym kluczem, jak mógłby każdy odwiedzający, sprawdza, które tabele odpowiadają bez logowania. Tylko liczy wiersze: nigdy nie pobiera ani nie zapisuje danych.

Dlaczego to ważne

W Supabase klucz publiczny ma trafiać do przeglądarki: dane chronią zasady Row Level Security. Jeśli tabela nie ma RLS, każdy może odczytać ją w całości jednym żądaniem. To dokładnie błąd z podatności Lovable (CVE-2025-48757) i najczęstszy problem w aplikacjach tworzonych z AI.

Jak to naprawić

Włącz Row Level Security we wszystkich tabelach i napisz zasady, które pozwalają każdemu użytkownikowi czytać tylko własne wiersze; publiczny odczyt zostaw tylko tam, gdzie dane naprawdę są publiczne. W Firebase zamień reguły trybu testowego na reguły wymagające sesji. Potem zeskanuj ponownie, aby potwierdzić, że liczba wierszy widocznych anonimowo wynosi zero.

Jak działa ten test

Aplikacje zbudowane w Lovable, Bolt czy v0 zwykle łączą się z Supabase bezpośrednio z przeglądarki, więc adres Twojego projektu i jego klucz publiczny (anon lub sb_publishable_…) są w Twoim JavaScripcie. To normalne: ten klucz ma być publiczny. Scanaris je znajduje, pyta API Supabase, jakie tabele udostępnia, i dla każdej wysyła żądanie HEAD z Prefer: count=exact. Odpowiedź zawiera liczbę wierszy widocznych dla odwiedzającego bez sesji i żadnych danych. Jeśli API nie publikuje listy tabel, sprawdzane są nazwy najczęściej używane przez narzędzia AI (profiles, users, orders, messages…). W Firebase test sprawdza, czy korzeń Realtime Database odpowiada na odczyt bez sesji.

Co oznacza wynik

Tabelę, w której anonimowo widać więcej niż zero wierszy, może odczytać każdy, kto otworzy Twoją stronę: jedno żądanie z kluczem publicznym i ma całą tabelę. To dokładnie schemat podatności Lovable (CVE-2025-48757). Przy włączonym Row Level Security i rozsądnych zasadach anonimowy odwiedzający widzi zero wierszy, dlatego „0” nigdy nie daje wyniku.

Jak to naprawić w Supabase

Znajdź tabele bez RLS, włącz je i napisz jedną zasadę na operację. Publiczny odczyt zostaw tylko tam, gdzie dane naprawdę są publiczne (blog, katalog produktów).

-- Tables in the public schema without RLS
select c.relname
from pg_class c
join pg_namespace n on n.oid = c.relnamespace
where n.nspname = 'public' and c.relkind = 'r' and not c.relrowsecurity;

alter table public.profiles enable row level security;

create policy "profiles: own rows" on public.profiles
  for select to authenticated
  using ((select auth.uid()) = id);

Jak to naprawić w Firebase

Zastąp reguły trybu testowego regułami, które domyślnie wszystkiego zabraniają i otwierają tylko to, co należy do danego użytkownika:

{
  "rules": {
    ".read": false,
    ".write": false,
    "users": {
      "$uid": {
        ".read": "auth != null && auth.uid === $uid",
        ".write": "auth != null && auth.uid === $uid"
      }
    }
  }
}

Instrukcję krok po kroku znajdziesz w przewodniku po Supabase i przewodniku po Firebase.

Najczęściej zadawane pytania

Czy Scanaris czyta moje dane?

Nie. Odczytuje tylko liczbę wierszy, którą API zwraca w nagłówku; żądania nie przynoszą zawartości tabel i nic nie jest zapisywane.

Czy mogę zamiast tego ukryć klucz publiczny?

Nie i nie trzeba: przeglądarka potrzebuje go do komunikacji z Supabase. Twoje dane chroni RLS, a nie ukrywanie klucza.

Sprawdź to na swojej stronie

Przeskanuj swoją stronę za darmo i zobacz, czy ten i 47 innych testów przechodzi, z promptem naprawczym dla każdego problemu.

Przeskanuj moją stronę za darmo

Z bloga

Bezpieczeństwo według stacku

Powiązane testy