Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Token sincronizado y doble envío

5 tareas · 40 min · Principiante

El control principal contra las peticiones no deseadas es un valor que la página del portal conoce y una página ajena no. Bien hecho es sencillo; mal hecho, deja pasar justo lo que debía frenar. El Fondo Pescadero te entrega el código de su verificador, sus decisiones durante una prueba funcional, la nota técnica de su simulador de créditos y un extracto de su proxy. Se lee el control como quien lo va a corregir.

0 de 5 · 0%

Objetivo de la sala

El control principal contra las peticiones no deseadas es un valor que la página del portal conoce y una página ajena no. Bien hecho es sencillo; mal hecho, deja pasar justo lo que debía frenar. El Fondo Pescadero te entrega el código de su verificador, sus decisiones durante una prueba funcional, la nota técnica de su simulador de créditos y un extracto de su proxy. Se lee el control como quien lo va a corregir.

En el patrón de token sincronizado, el servidor genera un valor imprevisible ligado a la sesión, lo pone en cada formulario (o lo entrega a la página para que lo envíe en una cabecera) y lo exige de vuelta en cada petición que cambia algo. Una página de otro sitio no puede leer el formulario del portal, porque la política del mismo origen le impide leer la respuesta, y por eso no puede incluir el valor.

Para que el patrón sirva tienen que cumplirse cuatro cosas: el valor es imprevisible, está ligado a la sesión, se verifica en el servidor en todos los métodos que cambian estado y su ausencia se trata igual que un valor incorrecto.

Responde para continuar

¿Por qué una página de otro sitio no puede incluir el token sincronizado en su petición?

Ver pista de ayuda

Piensa en qué impide la política del mismo origen: enviar o leer.

Lee proteccion_csrf.py línea por línea, sobre todo la condición final. Un verificador que solo compara cuando el campo viene acepta, sin darse cuenta, las peticiones que no lo traen: justo las que llegarían desde una página ajena, que no lo conoce. Después confírmalo en registro-verificacion.txt.

Responde para continuar

¿Qué petición a /cuenta/correo se aceptó sin token durante la prueba? Escribe su identificador.

Ver pista de ayuda

Busca una respuesta 302 con el token ausente en esa ruta.

Las listas de excepciones existen por buenas razones: un aviso de una pasarela de pagos no viene de un navegador y se autentica con su propia firma. El riesgo es la excepción «temporal» que nadie retira. Revisa EXCEPCIONES en el código y pregúntate qué cambia cada ruta exenta y si tiene otro control que la cubra.

Responde para continuar

¿Qué ruta exenta de la verificación cambia algo que mueve dinero del asociado? Escríbela tal como aparece en el código.

Ver pista de ayuda

Una de las dos exenciones tiene su propia firma; la otra no.

Cuando la aplicación no guarda sesión en el servidor se usa el doble envío: el valor va en una cookie y también en una cabecera o un campo, y el servidor comprueba que coincidan. En su forma ingenua, el servidor solo compara dos valores iguales sin saber si los emitió él. La guía de prevención de OWASP la desaconseja, porque quien logre escribir una cookie para el dominio (desde otro host del mismo sitio, por ejemplo) hace que la comparación pase. La variante recomendada firma el valor con una clave del servidor y lo liga a la sesión, de modo que solo valen los que el servidor emitió para esa persona.

Lee simulador-api.txt.

Responde para continuar

¿Qué le falta al doble envío del simulador para seguir la variante recomendada?

Ver pista de ayuda

Hoy cualquier pareja de valores iguales se acepta.

Un token en la URL deja de ser secreto: queda en el historial, en los registros de cada intermediario y en la cabecera Referer de la siguiente página. Va en un campo oculto del formulario o en una cabecera, nunca en la cadena de consulta. Revisa registro-acceso.txt y su nota final.

Responde para continuar

¿Qué ruta pone el token del formulario en la URL? Escríbela sin la cadena de consulta.

Ver pista de ayuda

Busca el nombre del campo del token dentro de una línea del proxy.

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