Django logo

Очередной фикс уязвимостей в безопасности.

Исправлена функция reverse(). Можно было, при определенной комбинации аргументов, получить ссылку относительно протокола, а не домена, и перенаправить пользователя на сторонний сайт.

Изменена генерация уникального названия загружаемого файла. Раньше добавлялся инкрементированный индекс(_1, _2 и т.д.). Если файл с таким названием уже существует, инкрементировался индекс, пока не получалось уникальное названия файла. При загрузке большого количества небольших файлов с одинаковым названием, os.stat() вызывался все большее количество раз, что влияло на производительность сервера. Теперь добавляется случайная строка.

Исправлен RemoteUserMiddleware. При смене заголовка REMOTE_USER без "логаута", можно было получить доступ к сессии другого пользователя. Теперь будет выполнятся повторная авторизация пользователя.

Исправлена страница выбора связанных объектов в админке. Выбор связанного объекта для ForeignKey можно настроить как через список(<select>), так и в новом окне. Название поля связи передавалось через URL окна. Проверка прав доступа к модели выполнялась, но не проверялось является ли переданное поле связью между моделями. Таким образом, зная структуру модели, можно было получить доступ к любому полю модели.

Полное описание релизов доступно на официальном сайте.