Everything you wanted to know
about the Django framework

Выпущены релизы безопасности Django: 2.2.8 и 2.1.15

В соответствии с политикой безопасности, команда Django выпускает Django 2.2.8 и Django 2.1.15. Этот выпуск решает проблему безопасности, подробно описанную ниже. Мы призываем всех пользователей Django обновиться как можно скорее.

CVE-2019-19118: повышение привилегий в админке Django.

Начиная с Django 2.1, администратор модели Django, отображающий родительскую модель со встроенными связанными моделями, где пользователь имеет разрешения только для просмотра родительской модели, но редактирует разрешения для встроенной модели, будет отображать представление родительской модели только для чтения, но редактируемые формы для встраивания.

Отправка этих форм не позволит напрямую редактировать родительскую модель, но вызовет метод save() родительской модели и вызовет обработчики сигналов до и после сохранения. Это повышение привилегий, поскольку пользователь, у которого нет разрешения на редактирование модели, не должен иметь возможность инициировать свои сигналы, связанные с сохранением.

Для решения этой проблемы был изменен код обработки разрешений интерфейса администратора Django. Теперь, если у пользователя есть только разрешение на «просмотр» для родительской модели, вся отображаемая форма не будет редактируемой, даже если у пользователя есть разрешение на редактирование моделей, включенных во встроенные.

Это обратное несовместимое изменение, и команда безопасности Django осознает, что некоторые пользователи Django зависели от возможности разрешить редактирование встроенных строк в форме администратора родительской модели, доступной только для просмотра.

Учитывая сложность администратора Django и, в частности, проверки, связанные с разрешениями, команда безопасности Django считает, что это изменение было необходимо: в настоящее время невозможно сохранить существующее поведение, избегая при этом потенциального повышения привилегий , который позволит избежать повторения подобных проблем в будущем, и который будет совместим с философией Django по умолчанию.

В настоящее время разработчики, чьи приложения затронуты этим изменением, должны заменить использование встроенных функций в родительских элементах только для чтения пользовательскими формами и представлениями, которые явно реализуют желаемую функциональность. В более долгосрочной перспективе добавление документированного, поддерживаемого и должным образом протестированного механизма для частично редактируемых многомодельных форм в интерфейс администратора может произойти в самом Django.

Спасибо Shen Ying за сообщение об этой проблеме.

Затронутые поддерживаемые версии

  • Джанго мастер
  • Django 3.0 (который будет выпущен в отдельном посте позже сегодня)
  • Django 2.2
  • Django 2.1

Решение

Патчи для решения проблемы были применены к основной ветке Django и ветвям релизов 3.0, 2.2 и 2.1. Патчи могут быть получены из следующих наборов изменений:

  • На мастер ветке
  • На ветке релиза 3.0
  • На ветке релиза 2.2
  • На ветке релиза 2.1

Были выпущены следующие пакеты:

  • Django 2.2.8
  • Django 2.1.15

Идентификатор ключа PGP, используемый для этих выпусков, - Карлтон Гибсон: E17DF5C82B4F9D00.

Общие замечания относительно отчетов по безопасности

Как всегда, разработчики Django просят сообщать о потенциальных проблемах безопасности по электронной почте security@djangoproject.com, а не через экземпляр Trac Django или список разработчиков django. Пожалуйста, ознакомьтесь с политикой безопасности Django для получения дополнительной информации.

Поделитесь с другими:

Представления-классы
(Class-Based Views)

Детальное описание и структура классов Django.

Добавление пользовательской аутентификации в Django

Нам необходимо добавить пользовательский бэкенд аутентификации в наш проект Django. Механизм аутентификации по умолчанию в Django требует, чтобы пользователь предоставил имя пользователя и пароль. Рассмотрим сценарий, в котором вы создаете банковское приложение. У каждого клиента есть customer_id. Возможно, вы захотите поддержать аутентификацию клиента с помощью имени пользователя и customer_id.

Выпущены релизы безопасности Django: 3.0.3, 2.2.10 и 1.11.28

В соответствии с политикой безопасности, команда Django выпускает Django 3.0.3, Django 2.2.10 и Django 1.11.28. Эти выпуски решают проблему безопасности, подробно описанную ниже. Мы призываем всех пользователей Django обновиться как можно скорее.

Релиз исправления Django: 3.0.2

Сегодня выпущен релиз исправления ошибок Django 3.0.2. Пакет релиза и контрольные суммы доступны на странице загрузок, а также из индекса пакетов Python. Идентификатор ключа PGP, использованный в этом выпуске: Mariusz Felisiak: 2EF56372BA48CD1B.

Как переключиться на пользовательскую модель User в существующем проекте

Документация по Django рекомендует всегда начинать ваш проект с пользовательской модели User (даже если она идентична Django с самого начала), чтобы упростить настройку позже, если вам нужно. Но что делать, если вы не видели этого при запуске проекта, или если вы унаследовали проект без пользовательской модели User, и вам нужно добавить ее?

Выпущены релизы безопасности Django: 3.0.1, 2.2.9 и 1.11.27

В соответствии с политикой безопасности, команда Django выпускает Django 3.0.1, Django 2.2.9 и Django 1.11.27. Эти выпуски решают проблему безопасности, подробно описанную ниже. Мы призываем всех пользователей Django обновиться как можно скорее.

Django: WebSocket`ы и Channels

WebSockets — это технология, которая позволяет открывать сеанс интерактивной связи между браузером пользователя и сервером. С помощью этой технологии пользователь может отправлять сообщения на сервер и получать управляемые событиями ответы, не требуя длительного опроса, то есть без необходимости постоянно проверять сервер на предмет ответа. Подумайте, когда вы отвечаете на электронное письмо в Gmail, и в нижней части экрана вы видите всплывающее предупреждение «1 непрочитанное сообщение от [...]» от человека, на которого вы только что отвечали. Такая обратная связь в режиме реального времени обусловлена такими технологиями, как WebSockets!

Выпуск Django 3.0

Команда Django рада объявить о выпуске Django 3.0: движение к тому, чтобы сделать Django полностью асинхронным, предоставляя поддержку для работы в качестве приложения ASGI, теперь официально поддерживает MariaDB 10.1 и выше, а также много других новых функций и возможностей.

Выпущены релизы безопасности Django: 2.2.8 и 2.1.15

В соответствии с политикой безопасности, команда Django выпускает Django 2.2.8 и Django 2.1.15. Этот выпуск решает проблему безопасности, подробно описанную ниже. Мы призываем всех пользователей Django обновиться как можно скорее.

Путь от request до response в Джанго

Веб-приложение или веб-сайт вращаются вокруг цикла запрос-ответ, и приложения Django не являются исключением. Но это не просто двухэтапный процесс. Наши приложения Django должны пройти различные стадии, чтобы вернуть конечному пользователю результат. Чтобы лучше понять структуру Django, мы должны понимать, как инициируются запросы и как конечный результат передается конечному пользователю. В статье объясняются различные этапы запросов и используемое там программное обеспечение или код.

Выпущен релиз-кандидат Django 3.0

Кандидат 1 релиза Django 3.0 - это последняя возможность для вас испытать множество новых функций перед выпуском Django 3.0.