Примечания к выпуску 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.

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