Everything you wanted to know
about the Django framework

Выпущены релизы безопасности 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 была осведомлена об этой проблеме безопасности, ее механизмы уже были известны общественности, и было сочтено лучшим выпустить новые выпуски Django немедленно.

CVE-2019-19844: Потенциальный взлом аккаунта через форму сброса пароля

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

Чтобы решить эту проблему, в Django были внесены два изменения:

  1. После получения списка потенциально совпадающих учетных записей из базы данных, функция сброса пароля Django теперь также проверяет адрес электронной почты на эквивалентность в Python, используя рекомендованный процесс сравнения идентификаторов из Технического отчета Unicode 36, раздел 2.11.2 (B) (2).
  2. При создании электронных писем для сброса пароля Django теперь отправляет на адрес электронной почты, полученный из базы данных, а не на адрес электронной почты, указанный в форме запроса на сброс пароля.

Этот вопрос был доведен до сведения команды безопасности Django Саймоном Шареттом, который узнал об этом после прочтения публичного раскрытия аналогичной проблемы, которая затронула GitHub.

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

  • Django master branch
  • Django 3.0
  • Django 2.2
  • Django 1.11

Решение

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

Были выпущены следующие версии:

Идентификатор ключа PGP, используемый для этих выпусков, Mariusz Felisiak: 2EF56372BA48CD1B.

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

Как всегда, мы просим сообщать о потенциальных проблемах безопасности по электронной почте security@djangoproject.com, а не через экземпляр Trac 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.