Cualquiera puede leer tu base de datos Supabase
Instrucciones generales. Abre este artículo desde tu informe de PageCheck para verlo completado con los registros de tu dominio y los pasos exactos de tu proveedor de DNS.
Qué es
Su sitio guarda su contenido en una base de datos de Supabase. La página accede a esa base de datos con una clave pública que forma parte del código de la página, por lo que el navegador de cada visitante la tiene. Esa clave está pensada para ser pública: lo que protege los datos son las reglas de acceso de cada tabla (Supabase lo llama Row Level Security).
Qué falla
Tu base de datos Supabase responde a la clave pública y lista sus tablas, así que Row Level Security está desactivado o incompleto. Cualquiera que abra tu sitio puede leer, y a menudo cambiar o borrar, los datos que hay detrás.
Cómo arreglarlo
1. Active las reglas de acceso de cada tabla. En el panel de Supabase, abra Authentication → Policies (o Table editor → cada tabla → Row Level Security) y active Row Level Security en todas las tablas del esquema public. Con ella activada y sin ninguna policy, la clave pública no puede leer nada.
2. Añada una policy solo para lo que el público necesita. Si una parte de una tabla debe ser realmente pública (por ejemplo, una lista de productos), añada una policy que permita leer solo esas filas y columnas. Todo lo demás sigue siendo privado y solo se accede a ello desde su propio código de servidor, que usa una clave secreta, nunca la clave que va en la página.
3. Compruébelo desde fuera. Abra su sitio en una ventana de navegación privada y confirme que sigue funcionando; después vuelva a ejecutar esta comprobación. No necesita cambiar la clave pública: está pensada para ser pública; lo que protege los datos son las reglas de acceso.
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.
Asunto: example.com – cualquiera puede leer nuestra base de datos Supabase Hola: Una comprobación del sitio (PageCheck) ha detectado que la base de datos Supabase de nuestro sitio se puede leer con la clave pública que está en la página, porque Row Level Security está desactivado. Por favor: 1. Active Row Level Security en todas las tablas del esquema public. 2. Añada una policy de lectura solo para los datos que realmente deban ser públicos y mantenga todo lo demás privado. 3. Confirme desde fuera que las tablas privadas ya no pueden leerse y que el sitio sigue funcionando. La clave pública no necesita cambiarse: está pensada para ser pública. ¡Gracias!
Revisa tu sitio para ver si tiene este problema. Revisar un sitio web