Безопасно ли использовать GZip Middleware в Django> = 1.10? - PullRequest
0 голосов
/ 12 марта 2019

Я хочу включить сжатие текста в Django.Документация по производительности ссылается на GZip Middleware в качестве текущего решения для сжатия текста.Тем не менее, он поставляется со строгим предупреждением:

GZipMiddleware

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

Пара вопросов:

  • Существуют ли какие-либо альтернативы сжатия текста, которые я могу использовать с Django, которые не подвержены угрозе безопасности?
  • Если я использую токены CSRF при использовании POST и у меня включено промежуточное ПО CSRF, я в безопасности?

Снова через документы :

Изменено в Django 1.10: В более старых версиях механизм защиты CSRF в Django был уязвим к атакам BREACH, когда сжатиеиспользовался.Это больше не так, но вы все равно должны позаботиться о том, чтобы не раскрыть свои секреты таким образом.

1 Ответ

1 голос
/ 14 марта 2019

Я определенно предлагаю взглянуть на бумагу BREACH , которая короткая и довольно четкая.

Как отмечено там:

Чтобы атака была успешной, требуется несколько вещей. Чтобы быть уязвимым для этого побочного канала, веб-приложение должно:

  1. Обслуживание с сервера, использующего сжатие на уровне HTTP
  2. Отражение ввода пользователя в телах ответа HTTP
  3. Отражение секрета (например, токена CSRF) в телах ответа HTTP

Итак, если вы не отображаете информацию и секреты пользователей в теле ответа, вы не уязвимы.

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

Поскольку эта атака основана на определенных функциях приложения, а не является уязвимостью инфраструктуры, Django не может гарантировать, что приложения являются "безопасными". Django может сделать - защитить основной секрет, уязвимый для BREACH, для которого он предоставляет поддержку: токен CSRF. Начиная с версии 1.10, Django использовал одно из предложенных в статье мер по смягчению (см. Раздел 3.4), чтобы защитить его от этой атаки :

Для защиты от атак BREACH токен не является просто секретом; случайная соль добавляется к секрету и используется для его шифрования.

Подводя итог: если единственный секрет, который вам нужно защитить, это токен Django CSRF, и вы используете Django 1.10 или выше, то разумно сделать вывод, что вы можете использовать gzip и при этом быть в безопасности от BREACH.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...