Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Verificar Origin y Referer en el servidor

5 tareas · 40 min · Principiante

El navegador dice en cada petición desde dónde sale, y el servidor puede usarlo como segunda comprobación. Comparar dos cadenas parece fácil, y por eso se escribe mal tan a menudo. El Fondo Pescadero añadió una comprobación de origen antes de cada POST; se lee su código y dos días de sus decisiones para saber qué deja pasar y por qué.

0 de 5 · 0%

Objetivo de la sala

El navegador dice en cada petición desde dónde sale, y el servidor puede usarlo como segunda comprobación. Comparar dos cadenas parece fácil, y por eso se escribe mal tan a menudo. El Fondo Pescadero añadió una comprobación de origen antes de cada POST; se lee su código y dos días de sus decisiones para saber qué deja pasar y por qué.

Origin lleva solo el origen de la página que inició la petición (esquema, host y puerto, sin ruta). Los navegadores la envían en las peticiones entre orígenes y en todas las que no son GET ni HEAD, también dentro del mismo origen. Referer lleva la dirección de la página anterior, a veces completa y a veces recortada según su política de referencia, y puede faltar.

La comprobación razonable usa Origin cuando viene; si falta, extrae el origen del Referer; y en los dos casos compara el origen completo contra una lista exacta de orígenes permitidos.

Responde para continuar

¿Qué contiene la cabecera Origin de una petición POST?

Ver pista de ayuda

Es la misma definición de origen del módulo de la web vista por el auditor.

Abre verifica_origen.py. Comparar con «empieza por» no es comparar el origen: cualquier host cuyo nombre empiece con la misma cadena pasa la prueba, aunque pertenezca a otro dominio registrable. Lo mismo ocurre con «contiene» o con una expresión regular sin anclar. Después busca en registro-origen.txt la consecuencia.

Responde para continuar

¿Qué petición aceptó la comprobación aunque su Origin pertenece a un dominio que no es del fondo? Escribe su identificador.

Ver pista de ayuda

Lee con cuidado dónde termina cada valor de Origin aceptado.

A veces el navegador envía Origin: null: desde documentos aislados con sandbox, tras redirecciones entre orígenes, desde esquemas como data: o file: y en algunos casos por la política de referencia. Ese valor no identifica a nadie, y una página ajena puede producir contextos que lo generan. La guía de OWASP es clara: el literal null no se pone nunca en una lista de permitidos.

Responde para continuar

¿Cómo debe tratar la comprobación una petición POST con Origin igual a null en /cuenta/correo?

Ver pista de ayuda

null no prueba nada sobre de dónde salió la petición.

Que falten las dos cabeceras no prueba que la petición sea propia. Un servidor que en ese caso deja pasar hace que la comprobación entera dependa de que el navegador las mande. Para acciones que cambian estado, la decisión prudente es rechazar si no hay otra defensa que la sostenga. Cuenta en el registro las veces que la comprobación dejó pasar ese caso; ignora lo que no es POST.

Responde para continuar

¿Cuántas peticiones POST aceptó la comprobación sin Origin ni Referer? Escribe solo el número.

Ver pista de ayuda

Busca las filas con (sin) en las dos columnas y la decisión aceptada.

Con los tres defectos a la vista (prefijo, null y ausencia), la corrección se escribe en una frase que el equipo pueda convertir en código y en pruebas. La comprobación de origen complementa al token, no lo reemplaza.

Responde para continuar

¿Qué corrección propones para verifica_origen.py?

Ver pista de ayuda

Una lista de bloqueo nunca termina y «contiene» es peor que «empieza por».

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