Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Lista 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.

0 de 5 · 0%

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.

Inicia sesión para registrar tus puntos y progreso en el ranking.

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