10 de diciembre de 2012
Django 1.3.5 aborda dos problemas de seguridad presentes en versiones anteriores de Django en la serie 1.3.
Por favor, encuentra los textos que necesito traducir. Aquí tienes las traducciones:
Varias liberaciones de seguridad anteriores de Django se centraron en el problema de envenenar el encabezado HTTP Host, lo que hace que Django genere URLs que apuntan a dominios arbitrarios y potencialmente maliciosos.
En respuesta a la entrada adicional recibida y los informes de problemas continuos después de la liberación anterior, estamos tomando medidas adicionales para reforzar la validación del encabezado Host. En lugar de intentar acomodar todas las características que soporta HTTP aquí, la validación del encabezado Host de Django intenta apoyar un conjunto más pequeño pero mucho más común:
Los nombres de host deben consistir en caracteres [A-Za-z0-9] más guion (“-”) o punto (“.”).
Las direcciones IP – tanto IPv4 como IPv6 – están permitidas.
Si se especifica, el puerto es numérico.
Cualquier desviación de esto ahora será rechazada, lo que levantará la excepción django.core.exceptions.SuspiciousOperation.
También siguiendo un problema anterior: en julio de este año, hicimos cambios a las clases de redirección HTTP de Django, realizando una validación adicional del esquema de la URL a la que se redirige (ya que tanto dentro de las aplicaciones proporcionadas por Django como muchas aplicaciones de terceros, aceptar un objetivo de redirección suministrado por el usuario es un patrón común).
Desde entonces, dos auditorías independientes del código han encontrado problemas potenciales adicionales. Por lo tanto, similar al problema del encabezado Host, estamos tomando medidas para proporcionar una validación más ajustada en respuesta a los problemas informados (principalmente con aplicaciones de terceros, pero en cierta medida también dentro de Django mismo). Esto se produce en dos partes:
Una nueva función de utilidad, django.utils.http.is_safe_url, se agrega; esta función toma una URL y un hostname, y verifica que la URL sea relativa o si es absoluta coincida con el hostname proporcionado. Esta función está destinada a usarse siempre que se aceptan objetivos de redirección suministrados por el usuario, para asegurarse de que dichas redirecciones no puedan llevar a sitios terceros arbitrarios.
Todas las vistas propias de Django – principalmente en el sistema de autenticación – que permiten objetivos de redirección suministrados por el usuario ahora utilizan is_safe_url para validar la URL proporcionada.
may 31, 2026