Phishing: permitir # en la URL de redireccionamiento proporcionada por el usuario?

1

Actualmente estoy trabajando en una aplicación que requiere autenticación para algunas páginas. Para ser amables con nuestros usuarios, ofrecemos la posibilidad de especificar una url de redireccionamiento a la que se devuelve el usuario después de iniciar sesión.

Para evitar la vulnerabilidad de redireccionamiento abierta , queremos asegurarnos de que esta URL sea interna.

Ahora mismo hacemos lo siguiente:

  1. No permitir cadenas con caracteres que no sean a-z0-9/=._-
  2. Antes de completar el contenido proporcionado por el usuario, antes de que el usuario proporcione el contenido, complete antes nuestra URL base completa ( https://www.example.com/ ). Entonces, incluso si el usuario nos envía https://www.evil.com y el paso 1 ya no lo bloquearía, terminará como Location: https://www.example.com/https://www.evil.com .

Sin embargo, debido a la funcionalidad de interfaz requerida, también nos gustaría incluir # como un carácter en la lista blanca en el paso 1.

Un ejemplo sería:

Location: https://www.example.com/totally-relative-url#magic-that-leads-to-external-redirect .

¿Esto abre posibilidades para redireccionamientos abiertos?

    
pregunta shokora 15.02.2018 - 12:30
fuente

1 respuesta

4

El # en un URI denota un identificador de fragmento . Esto no se envía al servidor y, por lo tanto, no se puede usar para provocar una redirección sin la ayuda del lado del cliente.

debería ser seguro para enviar a un usuario, me preocuparía más el resto de la URL que el fragmento.

    
respondido por el Marc 15.02.2018 - 12:35
fuente

Lea otras preguntas en las etiquetas