Notas de lanzamiento de Django 1.5.2

13 de agosto de 2013

Esta es Django 1.5.2, un lanzamiento de corrección de errores y seguridad para Django 1.5.

Mitigado posible ataque XSS mediante URLs de redirección proporcionadas por el usuario

Django se basa en la entrada del usuario en algunos casos (por ejemplo, django.contrib.auth.views.login(), django.contrib.comments, 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()) no comprobaron si el esquema es http(s) y como tal permitieron URLs de JavaScript (javascript:…) ser introducidas. Si un desarrollador confiaba en is_safe_url() para proporcionar objetivos de redirección seguros y ponía tal URL en una etiqueta, podría sufrir un ataque XSS. Este bug no afecta a Django actualmente, ya que solo ponemos esta URL en la cabecera de respuesta Location y los navegadores parecen ignorar JavaScript allí.

Vulnerabilidad XSS en django.contrib.admin

Si se utiliza un campo URLField en Django 1.5, muestra el valor actual del campo y un enlace al objetivo en la página de cambio administrativa. La rutina de visualización de este widget estaba defectuosa y permitía XSS.

Bugfixes

  • Se corrigió un error de caída con prefetch_related() (#19607), así como algunas regresiones de pickle con prefetch_related (#20157 y #20257).

  • Corregida una regresión en django.contrib.gis en la salida de Google Map en Python 3 (#20773).

  • He aquí la traducción del texto original, manteniendo todas las etiquetas intactas:

  • Corregido el método get_many() de la parte trasera django.core.cache.backends.memcached.MemcachedCache en Python 3 (#20722).

  • Corregidas errores de sintaxis en la traducción de django.contrib.humanize: idiomas afectados: Español Mexicano, Mongólico, Rumano, Turco (#20695).

  • Se ha agregado soporte para paquetes en forma de rueda (#19252).

  • El token CSRF se renueva cuando un usuario inicia sesión.

  • Algunas correcciones de compatibilidad con Python 3, incluyendo #20212 y #20025.

  • He aquí la traducción del texto manteniendo todas las etiquetas intactas:

  • makemessages ya no se bloquea con UnicodeDecodeError (#20354).

  • Fixed la detección de geojson con SpatiaLite.

  • : meth:~django.test.SimpleTestCase.assertContains vuelve a funcionar correctamente con contenido binario (#20237).

  • Se ha corregido ManyToManyField si tiene un parámetro name de Unicode (#20207).

  • Se ha asegurado que el camino del pedido WSGI está basado correctamente en la variable de entorno SCRIPT_NAME o la configuración FORCE_SCRIPT_NAME, independientemente de si alguno de ellos tiene una barra diagonal al final (#20169).

  • Se ha corregido un bug poco común con el decorador override_settings(). Si se produce una excepción AttributeError: 'Settings' object has no attribute '_original_allowed_hosts', probablemente está solucionado (#20636).