🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónRespuestas que exponen propiedades internas
5 tareas · 40 min · Principiante
La otra mitad del problema va en sentido contrario: la API devuelve el objeto entero y confía en que la pantalla muestre solo lo debido. Un entrenador de Pulsoandino recibió un mensaje en su número personal, que nunca dio en el gimnasio. Te entregan las rutas de la API, dos controladores, los modelos y las respuestas guardadas desde el navegador de una cuenta de pruebas.
Objetivo de la sala
La otra mitad del problema va en sentido contrario: la API devuelve el objeto entero y confía en que la pantalla muestre solo lo debido. Un entrenador de Pulsoandino recibió un mensaje en su número personal, que nunca dio en el gimnasio. Te entregan las rutas de la API, dos controladores, los modelos y las respuestas guardadas desde el navegador de una cuenta de pruebas.Cuando un controlador devuelve el modelo tal cual, el framework lo convierte a JSON con todas sus columnas, salvo las que el modelo excluya. La aplicación luego pinta tres o cuatro de esos campos, y el equipo cree que el resto «no se ve». Pero la respuesta completa llega al dispositivo de quien pregunta: cualquiera la lee en las herramientas de desarrollo del navegador o en el tráfico de su propio teléfono.
El Top 10 de seguridad de APIs de OWASP de 2019 lo llamaba exposición excesiva de datos; la edición de 2023 lo unió con la asignación masiva en API3:2023, porque los dos son la misma pregunta hecha en dos direcciones: qué propiedades de este objeto puede ver o cambiar esta persona. MITRE tiene para la exposición, entre otras, CWE-213 (información sensible expuesta porque las políticas no coinciden), que su propia ficha marca como en estudio para retirarse por solaparse con otras; antes de etiquetar con ella, compara con la entrada de exposición de datos personales.
Responde para continuar
Un equipo dice que la respuesta de una API trae campos sensibles, pero que la app no los pinta. ¿Por qué eso no es un control?
Ver pista de ayuda
Piensa dónde termina la respuesta, no lo que se dibuja con ella.
Abre el laboratorio, entra en la carpeta pulsoandino-respuestas y lee EntrenadorController.php y Entrenador.php. El modelo usa una lista negada para la salida: excluye la clave y el token de recordar sesión, y deja salir todo lo demás. Después abre respuesta-entrenadores.json.
Responde para continuar
¿Qué campo de la respuesta de entrenadores lleva un dato de nómina?
Ver pista de ayuda
Busca un valor en pesos dentro del objeto del entrenador.
Compara la respuesta con pantalla-entrenadores.txt, que dice qué campos usa la app. Lo que la app no usa es lo que la respuesta no debería traer.
Responde para continuar
¿Cuántos campos de cada entrenador devuelve la API que la pantalla no usa?
Ver pista de ayuda
Cuenta los campos del objeto y resta los que la pantalla enumera.
La exposición pesa más cuando la ruta no pide sesión: entonces la respuesta la puede leer cualquiera. Cruza rutas-api.txt con las respuestas guardadas y busca qué ruta sin middleware de autenticación anida al socio completo.
Responde para continuar
¿Qué ruta que no pide sesión devuelve la fecha de nacimiento de los socios? Escríbela sin el método.
Ver pista de ayuda
El objeto socio aparece anidado dentro de cada puesto.
En la carpeta hay un ejemplo que ya está bien: PerfilResource.php construye la respuesta del perfil con los campos elegidos uno por uno, y respuesta-perfil.json muestra el resultado. Es la lista de permitidos aplicada a la salida.
Responde para continuar
¿Qué arreglo de la respuesta de entrenadores no vuelve a fallar cuando se añada otra columna al modelo?
Ver pista de ayuda
Es el mismo razonamiento de la lista de permitidos, ahora en la salida.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.