Примечания к выпуску Django 1.1.3

Добро пожаловать в Django 1.1.3!

Это третий выпуск «исправлений ошибок» в серии Django 1.1, улучшающий стабильность и производительность кодовой базы Django 1.1.

За одним исключением, Django 1.1.3 сохраняет обратную совместимость с Django 1.1.2. Он также содержит ряд исправлений и других улучшений. Django 1.1.2 является рекомендуемым обновлением для любой разработки или развертывания, использующей или нацеленной на Django 1.1.

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

Обратные несовместимые изменения

Ограниченные фильтры в интерфейсе администратора

Административный интерфейс Django, django.contrib.admin, поддерживает фильтрацию отображаемых списков объектов по полям соответствующих моделей, включая отношения на уровне базы данных. Это реализуется путем передачи аргументов поиска в части строки запроса URL, а опции класса ModelAdmin позволяют разработчикам указывать конкретные поля или отношения, которые будут генерировать автоматические ссылки для фильтрации.

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

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

To remedy this, django.contrib.admin will now validate that querystring lookup arguments either specify only fields on the model being viewed, or cross relations which have been explicitly allowed by the application developer using the preexisting mechanism mentioned above. This is backwards-incompatible for any users relying on the prior ability to insert arbitrary lookups.

Вернуться на верх