Примечания к выпуску Django 1.4.20¶
18 марта 2015
Django 1.4.20 исправляет одну проблему безопасности в версии 1.4.19.
Устранена возможная XSS-атака через URL-адреса перенаправления, заданные пользователем¶
Django полагается на ввод пользователя в некоторых случаях (например, django.contrib.auth.views.login()
и i18n), чтобы перенаправить пользователя на URL «при успехе». Проверка безопасности для этих перенаправлений (а именно django.utils.http.is_safe_url()
) принимала URL с ведущими управляющими символами и поэтому считала URL типа \x08javascript:...
безопасными. В настоящее время эта проблема не затрагивает Django, поскольку мы помещаем этот URL только в заголовок ответа Location
, и браузеры, похоже, игнорируют JavaScript там. Браузеры, которые мы тестировали, также рассматривают URL с префиксами управляющих символов, таких как %08//example.com
, как относительные пути, поэтому перенаправление на небезопасную цель также не является проблемой.
Однако если разработчик полагается на is_safe_url()
для обеспечения безопасных целей перенаправления и помещает такой URL в ссылку, он может подвергнуться XSS-атаке, поскольку некоторые браузеры, например Google Chrome, игнорируют управляющие символы в начале URL в якоре href
.