Każdy może odczytać Twoją bazę danych Supabase
Instrukcje ogólne. Otwórz ten artykuł z raportu PageCheck, aby zobaczyć go uzupełnionego o rekordy Twojej domeny i dokładne kroki u Twojego dostawcy DNS.
Co to jest
Państwa witryna przechowuje treści w bazie danych Supabase. Strona łączy się z nią za pomocą klucza publicznego, który jest częścią kodu strony, więc ma go przeglądarka każdego odwiedzającego. Ten klucz jest przeznaczony do bycia publicznym — dane chronią reguły dostępu ustawione dla każdej tabeli (Supabase nazywa to Row Level Security).
Co jest nie tak
Twoja baza danych Supabase odpowiada na klucz publiczny i wylistowuje swoje tabele, więc Row Level Security jest wyłączone lub niekompletne. Każdy, kto otworzy Twoją witrynę, może odczytać, a często też zmienić lub usunąć dane, które za nią stoją.
Jak naprawić
1. Włącz reguły dostępu dla każdej tabeli. W panelu Supabase otwórz Authentication → Policies (albo Table editor → każda tabela → Row Level Security) i włącz Row Level Security dla każdej tabeli w schemacie public. Gdy jest włączone i nie ma żadnej polityki (policy), klucz publiczny nie może niczego odczytać.
2. Dodaj politykę (policy) tylko dla tego, czego potrzebuje publiczność. Jeśli część tabeli ma naprawdę być publiczna (na przykład lista produktów), dodaj politykę pozwalającą odczytywać tylko te wiersze i kolumny. Wszystko inne pozostaje prywatne i jest dostępne tylko dla Państwa kodu po stronie serwera, który używa klucza tajnego, nigdy klucza ze strony.
3. Sprawdź to z zewnątrz. Otwórz witrynę w oknie prywatnym przeglądarki i upewnij się, że nadal działa, a następnie uruchom tę kontrolę ponownie. Nie trzeba zmieniać klucza publicznego — jest przeznaczony do bycia publicznym; dane chronią reguły dostępu.
Lock down my Supabase database: it is readable with the public anon key because Row Level Security is off. Project: <my .supabase.co project>. Steps: 1. List every table in the public schema and tell me which, if any, genuinely need to be readable by anonymous visitors. 2. Enable Row Level Security on every table in the public schema. 3. For the tables that must be public, add the narrowest SELECT policy that serves the site (only the needed rows and columns); leave the rest with no anon policy. 4. Make sure the app reads private data only through server-side code using the service_role key, never the anon key in the browser. 5. Give me the SQL for the policies and the exact dashboard steps, and tell me how to verify from an anonymous client that the private tables return nothing. Do not rotate the anon key — it is public by design; the fix is the access rules.
Temat: example.com – każdy może odczytać naszą bazę danych Supabase Dzień dobry, Test witryny (PageCheck) wykazał, że bazę danych Supabase naszej witryny można odczytać kluczem publicznym zawartym w stronie, bo Row Level Security jest wyłączone. Prosimy o: 1. Włączenie Row Level Security dla każdej tabeli w schemacie public. 2. Dodanie polityki odczytu tylko dla danych, które naprawdę muszą być publiczne, a wszystko inne niech pozostanie prywatne. 3. Potwierdzenie z zewnątrz, że prywatnych tabel nie można już odczytać, a witryna nadal działa. Klucz publiczny nie wymaga zmiany — jest przeznaczony do bycia publicznym. Dziękujemy!
Sprawdź swoją stronę, aby zobaczyć, czy ma ten problem. Sprawdź stronę