← Todos los checks
SeguridadSeveridad típica: Crítico

Detector de base de datos abierta

Comprueba si las tablas de Supabase o la base de datos de Firebase de tu web se pueden leer sin iniciar sesión.

Comprobación gratis en vivo

Buscamos tu proyecto de Supabase o Firebase en el código público de tu web y comprobamos, con la misma clave pública que reciben tus visitantes, si sus tablas se pueden leer sin iniciar sesión. Solo contamos filas; nunca descargamos datos.

Compruébalo gratis en tu panel

Cuenta gratis, lista en 30 segundos. Solo contamos filas; nunca descargamos datos.

Qué comprueba

Este escáner busca en el JavaScript público de tu web la dirección de tu proyecto de Supabase o de tu Realtime Database de Firebase y la clave pública que usa el navegador. Con esa misma clave, como haría cualquier visitante, comprueba qué tablas responden sin iniciar sesión. Solo cuenta filas: nunca descarga ni guarda datos.

Por qué importa

En Supabase, la clave pública está pensada para ir en el navegador: lo que protege los datos son las políticas de Row Level Security. Si una tabla no tiene RLS, cualquiera puede leerla entera con una sola petición. Es exactamente el fallo de la vulnerabilidad de Lovable (CVE-2025-48757) y el más común en apps hechas con IA.

Cómo se arregla

Activa Row Level Security en todas las tablas y escribe políticas que solo dejen a cada usuario leer sus propias filas; deja lectura pública solo en lo que de verdad sea público. En Firebase, cambia las reglas del modo de prueba por reglas que exijan sesión. Después, vuelve a escanear para confirmar que el recuento anónimo es cero.

Cómo funciona esta comprobación

Las apps hechas con Lovable, Bolt o v0 suelen hablar con Supabase directamente desde el navegador, así que la URL de tu proyecto y su clave pública (anon o sb_publishable_…) están dentro de tu JavaScript. Es normal: esa clave está pensada para ser pública. Scanaris las encuentra, pregunta a la API de Supabase qué tablas expone y, por cada una, hace una petición HEAD con Prefer: count=exact. La respuesta trae el número de filas que ve un visitante sin sesión, y ningún dato. Si la API no publica la lista de tablas, prueba los nombres que más usan las herramientas de IA (profiles, users, orders, messages…). En Firebase, comprueba si la raíz de la Realtime Database responde a una lectura sin sesión.

Qué significa un hallazgo

Una tabla con más de cero filas visibles de forma anónima la puede leer cualquiera que abra tu web: una petición con la clave pública y se lleva la tabla entera. Es exactamente el patrón de la vulnerabilidad de Lovable (CVE-2025-48757). Con Row Level Security activado y políticas razonables, un visitante anónimo ve cero filas, por eso un "0" nunca da hallazgo.

Cómo arreglarlo en Supabase

Lista las tablas sin RLS, actívalo y escribe una política por operación. Deja lectura pública solo donde los datos sean públicos de verdad (un blog, un catálogo de productos).

-- 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);

Cómo arreglarlo en Firebase

Cambia las reglas del modo de prueba por reglas que lo nieguen todo por defecto y solo abran lo que es de cada usuario:

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

El paso a paso de cada caso está en la guía de Supabase y la guía de Firebase.

Preguntas frecuentes

¿Scanaris lee mis datos?

No. Solo lee el recuento de filas que la API devuelve en una cabecera; las peticiones no traen el contenido de las tablas y no se guarda nada.

¿Puedo esconder la clave pública en vez de esto?

No, y no hace falta: el navegador la necesita para hablar con Supabase. Lo que protege tus datos es RLS, no esconder la clave.

Compruébalo en tu web

Escanea tu web gratis y mira si este y otros 47 checks pasan, con un prompt de arreglo por cada fallo.

Escanear mi web gratis

Del blog

Seguridad por stack

Checks relacionados