===========================Django 1.4.14 release notes===========================*August 20, 2014*Django 1.4.14 fixes several security issues in 1.4.13.``reverse()`` could generate URLs pointing to other hosts=========================================================In certain situations, URL reversing could generate scheme-relative URLs (URLsstarting with two slashes), which could unexpectedly redirect a user to adifferent host. An attacker could exploit this, for example, by redirectingusers to a phishing site designed to ask for user's passwords.To remedy this, URL reversing now ensures that no URL starts with two slashes(//), replacing the second slash with its URL encoded counterpart (%2F). Thisapproach ensures that semantics stay the same, while making the URL relative tothe domain and not to the scheme.File upload denial-of-service=============================Before this release, Django's file upload handing in its default configurationmay degrade to producing a huge number of ``os.stat()`` system calls when aduplicate filename is uploaded. Since ``stat()`` may invoke IO, this may producea huge data-dependent slowdown that slowly worsens over time. The net result isthat given enough time, a user with the ability to upload files can cause poorperformance in the upload handler, eventually causing it to become very slowsimply by uploading 0-byte files. At this point, even a slow network connectionand few HTTP requests would be all that is necessary to make a site unavailable.We've remedied the issue by changing the algorithm for generating file namesif a file with the uploaded name already exists.:meth:`Storage.get_available_name()<django.core.files.storage.Storage.get_available_name>` now appends anunderscore plus a random 7 character alphanumeric string (e.g. ``"_x3a1gho"``),rather than iterating through an underscore followed by a number (e.g. ``"_1"``,``"_2"``, etc.).``RemoteUserMiddleware`` session hijacking==========================================When using the :class:`~django.contrib.auth.middleware.RemoteUserMiddleware`and the ``RemoteUserBackend``, a change to the ``REMOTE_USER`` header betweenrequests without an intervening logout could result in the prior user's sessionbeing co-opted by the subsequent user. The middleware now logs the user out ona failed login attempt.Data leakage via query string manipulation in ``contrib.admin``===============================================================In older versions of Django it was possible to reveal any field's data bymodifying the "popup" and "to_field" parameters of the query string on an adminchange form page. For example, requesting a URL like``/admin/auth/user/?pop=1&t=password`` and viewing the page's HTML allowedviewing the password hash of each user. While the admin requires users to havepermissions to view the change form pages in the first place, this could leakdata if you rely on users having access to view only certain fields on a model.To address the issue, an exception will now be raised if a ``to_field`` valuethat isn't a related field to a model that has been registered with the adminis specified.