Ihre Supabase-Datenbank kann von jedem gelesen werden
Allgemeine Anleitung. Öffnen Sie diesen Artikel aus Ihrem PageCheck-Bericht, um ihn mit den Einträgen Ihrer Domain und den genauen Schritten für Ihren DNS-Anbieter ausgefüllt zu sehen.
Was es ist
Ihre Website speichert ihre Inhalte in einer Supabase-Datenbank. Die Seite greift mit einem öffentlichen Schlüssel auf diese Datenbank zu, der Teil des Seitencodes ist und daher in jedem Besucher-Browser vorliegt. Dieser Schlüssel ist dazu gedacht, öffentlich zu sein – geschützt werden die Daten durch Zugriffsregeln für jede Tabelle (Supabase nennt das Row Level Security).
Was falsch ist
Ihre Supabase-Datenbank beantwortet den öffentlichen Schlüssel und listet ihre Tabellen auf, also ist Row Level Security aus oder unvollständig. Jeder, der Ihre Website öffnet, kann die Daten dahinter lesen und oft auch ändern oder löschen.
So beheben Sie es
1. Schalten Sie die Zugriffsregeln für jede Tabelle ein. Öffnen Sie im Supabase-Dashboard Authentication → Policies (oder Table editor → jede Tabelle → Row Level Security) und schalten Sie Row Level Security für jede Tabelle im Schema public ein. Ist sie eingeschaltet und gibt es keine Policy, kann der öffentliche Schlüssel nichts lesen.
2. Fügen Sie nur für das, was die Öffentlichkeit braucht, eine Policy hinzu. Wenn ein Teil einer Tabelle wirklich öffentlich sein soll (zum Beispiel eine Produktliste), fügen Sie eine Policy hinzu, die nur diese Zeilen und Spalten zum Lesen freigibt. Alles andere bleibt privat und wird nur von Ihrem eigenen serverseitigen Code abgerufen, der einen geheimen Schlüssel verwendet – niemals den Schlüssel in der Seite.
3. Prüfen Sie es von außen. Öffnen Sie Ihre Website in einem privaten Browserfenster und vergewissern Sie sich, dass sie weiterhin funktioniert. Führen Sie dann diese Prüfung erneut aus. Den öffentlichen Schlüssel müssen Sie nicht ändern – er ist dazu gedacht, öffentlich zu sein; die Zugriffsregeln schützen die Daten.
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.
Betreff: example.com – unsere Supabase-Datenbank kann von jedem gelesen werden Guten Tag, Eine Website-Prüfung (PageCheck) hat ergeben, dass die Supabase-Datenbank hinter unserer Website mit dem öffentlichen Schlüssel in der Seite gelesen werden kann, weil Row Level Security ausgeschaltet ist. Bitte: 1. Schalten Sie Row Level Security für jede Tabelle im Schema public ein. 2. Fügen Sie eine Lese-Policy nur für die Daten hinzu, die wirklich öffentlich sein müssen, und halten Sie alles andere privat. 3. Bestätigen Sie von außen, dass die privaten Tabellen nicht mehr gelesen werden können und die Website weiterhin funktioniert. Der öffentliche Schlüssel muss nicht geändert werden – er ist dazu gedacht, öffentlich zu sein. Vielen Dank!
Prüfen Sie Ihre Website, um zu sehen, ob sie dieses Problem hat. Website prüfen