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
Tu app decide quién puede ver o hacer cada cosa en el código que corre en el navegador del visitante. El problema es que ese código está en su ordenador, no en el tuyo: puede leerlo, cambiarlo y saltárselo. Ocultar un botón no impide la acción que había detrás.
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 desde fuera funciona. Le pides a un agente que solo los administradores vean el panel de administración, y esconde el enlace cuando el usuario no es administrador. Tú lo pruebas con una cuenta normal, no ves el enlace, y das por hecho que está protegido. Y lo está a la vista, que no es lo mismo que estar protegido.
La confusión de fondo es razonable: en el navegador, esconder y bloquear parecen lo mismo. Pero el navegador es territorio del visitante. Todo lo que decida tu código allí lo puede cambiar quien esté al otro lado, y no hace falta ser un experto: cualquiera con curiosidad y una tarde puede llamar directamente a la dirección que había detrás del botón.
El caso más frecuente es la pantalla de administración accesible escribiendo su dirección a mano. El más caro es el que además guarda o modifica datos: si esa operación llega a tu base de datos sin que nadie compruebe permisos del lado del servidor, la comprobación del navegador no ha servido de nada.
Lo bueno de este es que puedes comprobarlo tú mismo en cinco minutos, sin herramientas y sin saber programar. Y la prueba es concluyente: o cede o no cede.
Si al hacer la prueba la pantalla se abre pero sale vacía y sin datos, estás en una situación intermedia bastante mejor: la pantalla no está protegida, pero la base de datos sí. Hay que arreglarlo igual, pero no es una fuga de datos.
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
En mi app las comprobaciones de permisos se hacen en el navegador y creo que se pueden saltar escribiendo la dirección a mano. Necesito que hagas esto: 1. Hazme un inventario de las pantallas y las acciones que deberían estar restringidas, y dime para cada una dónde se comprueba el permiso ahora mismo: en el navegador, en el servidor o en las políticas de la base de datos. 2. Señálame las que solo se comprueban en el navegador. Esas son las que ceden. 3. Para cada una, añade la comprobación en el lado que corresponda: si los datos vienen de Supabase, la protección real son las políticas de seguridad por filas; si hay funciones de servidor, la comprobación va dentro de la función, antes de hacer nada. 4. Mantén las comprobaciones del navegador tal como están: sirven para que la interfaz sea comprensible. Solo añade la capa que falta detrás. 5. Dime si alguna operación de escritura llega hoy a la base de datos sin ninguna comprobación de permisos por detrás. Eso es lo primero que quiero cerrar. Escríbeme el SQL de las políticas que hagan falta para que lo revise, pero no lo apliques tú.
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.