Примечания к выпуску Django 1.1.3¶
Добро пожаловать в Джанго 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 — раскрывают конфиденциальную информацию, такую как хэши паролей пользователей.
Чтобы исправить это, django.contrib.admin теперь будет проверять, что аргументы поиска строки запроса либо указывают только поля просматриваемой модели, либо перекрестные связи, которые явно разрешены разработчиком приложения с использованием ранее существовавшего механизма, упомянутого выше. Это обратно несовместимо для любых пользователей, полагающихся на предварительную возможность вставки произвольных поисков.