Я определенно предлагаю взглянуть на бумагу BREACH , которая короткая и довольно четкая.
Как отмечено там:
Чтобы атака была успешной, требуется несколько вещей. Чтобы быть уязвимым для этого побочного канала, веб-приложение должно:
- Обслуживание с сервера, использующего сжатие на уровне HTTP
- Отражение ввода пользователя в телах ответа HTTP
- Отражение секрета (например, токена CSRF) в телах ответа HTTP
Итак, если вы не отображаете информацию и секреты пользователей в теле ответа, вы не уязвимы.
Если да, то вряд ли какая-либо схема сжатия текста будет работать. Атака использует фундаментальный характер сжатия текста: этот повторяющийся текст должен занимать меньше места. Вполне возможно, что существует схема сжатия, которая не будет уязвимой, но вам определенно необходимо убедиться в этом.
Поскольку эта атака основана на определенных функциях приложения, а не является уязвимостью инфраструктуры, Django не может гарантировать, что приложения являются "безопасными". Django может сделать - защитить основной секрет, уязвимый для BREACH, для которого он предоставляет поддержку: токен CSRF. Начиная с версии 1.10, Django использовал одно из предложенных в статье мер по смягчению (см. Раздел 3.4), чтобы защитить его от этой атаки :
Для защиты от атак BREACH токен не является просто секретом; случайная соль добавляется к секрету и используется для его шифрования.
Подводя итог: если единственный секрет, который вам нужно защитить, это токен Django CSRF, и вы используете Django 1.10 или выше, то разумно сделать вывод, что вы можете использовать gzip и при этом быть в безопасности от BREACH.