18 de marzo de 2015
Django 1.4.20 corrige un problema de seguridad en 1.4.19.
Django se basa en la entrada del usuario en algunos casos (por ejemplo, django.contrib.auth.views.login() y i18n) para redirigir al usuario a una URL de «éxito». Las comprobaciones de seguridad para estas redirecciones (es decir, django.utils.http.is_safe_url()) aceptaban URLs con caracteres de control en la parte delantera y consideraban URLs como \x08javascript:... seguras. Este problema no afecta a Django actualmente, ya que solo ponemos esta URL en el encabezado de respuesta Location y los navegadores parecen ignorar JavaScript allí. Los navegadores que hemos probado también tratan las URLs prefijadas con caracteres de control como por ejemplo %08//example.com como rutas relativas, por lo que la redirección a un objetivo no seguro no es un problema.
Sin embargo, si un desarrollador se basa en is_safe_url() para proporcionar objetivos de redirección seguros y coloca tal URL en una etiqueta href, podría sufrir un ataque XSS ya que algunos navegadores como Google Chrome ignoran caracteres de control al principio de una URL en una etiqueta href.
may 31, 2026