🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónLista de campos permitidos frente a lista negada
5 tareas · 40 min · Principiante
Tras la primera revisión, Pulsoandino protegió las columnas sensibles del socio. Dos semanas después llegaron los convenios con empresas y un panel nuevo para que los entrenadores creen clases. Te entregan el historial del repositorio, los modelos, una migración, dos controladores y los registros de noviembre. Se decide si el arreglo fue el correcto o solo el más corto.
Objetivo de la sala
Tras la primera revisión, Pulsoandino protegió las columnas sensibles del socio. Dos semanas después llegaron los convenios con empresas y un panel nuevo para que los entrenadores creen clases. Te entregan el historial del repositorio, los modelos, una migración, dos controladores y los registros de noviembre. Se decide si el arreglo fue el correcto o solo el más corto.Hay dos formas de limitar el enlace automático. La lista de permitidos enumera los campos que sí se aceptan y descarta el resto: en Laravel es la propiedad $fillable del modelo, en Rails los parámetros fuertes con permit, en Spring setAllowedFields. La lista negada enumera los que no se aceptan y deja pasar todo lo demás: en Laravel es $guarded con nombres de columna, en Spring setDisallowedFields.
La guía de OWASP sobre asignación masiva prefiere la primera, y la razón no es de gusto: la lista negada falla en silencio cada vez que alguien añade una columna y olvida añadirla también a la lista. La de permitidos falla hacia el lado seguro: un campo nuevo no se escribe hasta que alguien lo autoriza a propósito.
Responde para continuar
Un modelo protege con lista negada cinco columnas sensibles. ¿Qué pasa con la siguiente columna sensible que añada una migración?
Ver pista de ayuda
La lista negada solo conoce los nombres que tiene escritos.
Abre el laboratorio, entra en la carpeta pulsoandino-listas y lee historial.txt. Después compara la lista de Socio.php con las columnas que añade la migración de convenios, y busca en auditoria-perfil-noviembre.txt qué columnas nuevas llegaron desde el perfil. Observa también la línea de PLS-10603: la lista negada sí funciona con las columnas que conoce.
Responde para continuar
¿Qué columna añadida en noviembre cambia lo que paga el socio cada mes y quedó escribible desde el perfil?
Ver pista de ayuda
Mira el comentario de cada columna en la migración y el commit del 11 de noviembre.
Ubica en la auditoría de noviembre al socio que cambió esa columna y, días después, la otra columna del convenio.
Responde para continuar
¿Qué socio se asignó un descuento desde su perfil? Escribe su código.
Ver pista de ayuda
Es el mismo código en dos líneas de la auditoría.
Una regla de validación comprueba que un campo que llega tiene la forma correcta; no impide que lleguen otros. Si el código valida cuatro campos y después guarda la petición entera, los campos sin regla pasan sin revisar. En Laravel, $request->validated() devuelve solo los campos que tienen regla, mientras que $request->all() devuelve todo lo recibido. Compara SedeController.php con el otro controlador de la carpeta, y cruza con Clase.php y con la nota de registro-clases.txt.
Responde para continuar
¿Qué archivo valida los campos de la petición y después guarda todo lo recibido? Escribe el nombre del archivo.
Ver pista de ayuda
Uno de los dos controladores usa el resultado de la validación; el otro, no.
Ahora que sabes cómo falló la lista negada, elige el arreglo que no vuelve a fallar con la próxima migración.
Responde para continuar
¿Qué cambio en el portal de Pulsoandino evita que se repita lo de los convenios?
Ver pista de ayuda
Busca la opción que falla hacia el lado seguro cuando llega otra columna.
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.