1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- ==========================
- Django 1.7.3 release notes
- ==========================
- *Under development*
- Django 1.7.3 fixes several security issues and bugs in 1.7.2.
- WSGI header spoofing via underscore/dash conflation
- ===================================================
- When HTTP headers are placed into the WSGI environ, they are normalized by
- converting to uppercase, converting all dashes to underscores, and prepending
- `HTTP_`. For instance, a header ``X-Auth-User`` would become
- ``HTTP_X_AUTH_USER`` in the WSGI environ (and thus also in Django's
- ``request.META`` dictionary).
- Unfortunately, this means that the WSGI environ cannot distinguish between
- headers containing dashes and headers containing underscores: ``X-Auth-User``
- and ``X-Auth_User`` both become ``HTTP_X_AUTH_USER``. This means that if a
- header is used in a security-sensitive way (for instance, passing
- authentication information along from a front-end proxy), even if the proxy
- carefully strips any incoming value for ``X-Auth-User``, an attacker may be
- able to provide an ``X-Auth_User`` header (with underscore) and bypass this
- protection.
- In order to prevent such attacks, both Nginx and Apache 2.4+ strip all headers
- containing underscores from incoming requests by default. Django's built-in
- development server now does the same. Django's development server is not
- recommended for production use, but matching the behavior of common production
- servers reduces the surface area for behavior changes during deployment.
- Bugfixes
- ========
- * The default iteration count for the PBKDF2 password hasher has been
- increased by 25%. This part of the normal major release process was
- inadvertently omitted in 1.7. This backwards compatible change will not
- affect users who have subclassed
- ``django.contrib.auth.hashers.PBKDF2PasswordHasher`` to change the
- default value.
- * Fixed a crash in the CSRF middleware when handling non-ASCII referer header
- (:ticket:`23815`).
- * Fixed a crash in the ``django.contrib.auth.redirect_to_login`` view when
- passing a :func:`~django.core.urlresolvers.reverse_lazy` result on Python 3
- (:ticket:`24097`).
- * Added correct formats for Greek (``el``) (:ticket:`23967`).
- * Fixed a migration crash when unapplying a migration where multiple operations
- interact with the same model (:ticket:`24110`).
|