Cita a partir de mañana
Agendar revisión
99 €
Elegimos hueco, miro tu app con calma y te digo qué pasa y cómo se arregla.
- Sesión de trabajo en directo contigo
- Diagnóstico del error y del riesgo real
- Te quedas con el arreglo aplicado
En Supabase, la clave pública de tu app va en el navegador a propósito, y cualquiera puede leerla. Lo que impide que esa clave sirva para descargarse tus tablas enteras son las políticas de seguridad por filas. Si una tabla no las tiene activadas, esa protección no existe y la tabla está abierta a quien pregunte.
Esto no da la cara solo: tu app funciona igual de bien esté abierta o cerrada. La única forma de saberlo es mirar.
Solo leemos lo que tu app ya le entrega a cualquier visitante.
Porque activarla rompe cosas y desactivarla las arregla al instante. Cuando un agente se encuentra con un error de permisos al guardar o al leer, la solución que hace desaparecer el error en un segundo es quitar la seguridad de esa tabla. La app empieza a funcionar, nadie vuelve a mirar, y la tabla se queda así.
También pasa sin que nadie decida nada. Las tablas creadas directamente con SQL no llevan la seguridad activada por defecto: hay que acordarse de activarla. Si tus tablas las creó un agente escribiendo SQL en vez de usando el panel, es muy probable que varias estén así.
Lo que lo hace difícil de detectar es que no se comporta como un fallo. La app funciona perfectamente, no hay ningún error, ningún log raro y ninguna alerta. Supabase lo señala en su panel con una marca en las tablas sin restricción, pero si nadie entra a mirar esa pantalla, nadie se entera.
El riesgo real de este arreglo no es la seguridad, es dejar la app tirada: activar la seguridad en una tabla sin ponerle una política la cierra a cal y canto, también para tu propia app. Por eso se hace tabla por tabla y con la política preparada antes de pulsar el botón.
Las tablas del segundo montón también necesitan la seguridad activada, con una política de solo lectura para todo el mundo. Una tabla pública protegida sigue impidiendo que alguien la modifique; una tabla pública sin proteger, no.
Pégaselo tal cual al agente que escribió tu app. Está redactado para que te diga lo que ha hecho, no solo para que lo haga.
Prompt para pegarle a tu agente
Tengo tablas en Supabase sin seguridad por filas activada y quiero cerrarlas sin romper la app. Necesito que hagas esto: 1. Recorre el código y hazme un inventario: qué tablas usa la app, y para cada una si solo lee, si escribe, y desde qué pantallas. 2. Dime en cuáles de esas operaciones hay un usuario identificado garantizado y en cuáles la app pregunta sin sesión. 3. Para cada tabla, escríbeme en SQL las políticas que necesitaría, separadas por operación, con un comentario en una línea explicando a quién deja hacer qué. No las apliques: quiero revisarlas antes de ponerlas en el panel. 4. Si alguna tabla tiene datos de personas pero la app la consulta sin sesión, dímelo de forma destacada: eso significa que la app está dando por hecho un acceso público que no debería existir, y hay que cambiar cómo pregunta. No propongas desactivar la seguridad en ningún caso, y no uses la clave service_role para esquivar esto.
Cerrar una puerta abierta tiene un orden: primero se corta el acceso, después se comprueba en los registros si alguien entró, y solo entonces se despliega. Hacerlo al revés deja la app caída y borra el rastro de lo que pasó. Si prefieres no hacerlo solo, elige cuándo lo hacemos.
Cita a partir de mañana
99 €
Elegimos hueco, miro tu app con calma y te digo qué pasa y cómo se arregla.
Hoy, en cola prioritaria
199 €
Entras en la cola de hoy. Reservas hueco y lo dejamos resuelto en el día.
Marc Sala
IT Manager
No es un rating anónimo de un marketplace: es la persona que va a entrar en tu app. Reviso el código, encuentro qué falla y lo arreglo contigo delante.