MVC 5 - Устранение уязвимости BREACH

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

Учитывая эту уязвимость, она, похоже, влияет на серверы, которые соответствуют следующим критериям:

  • Служить с сервера, который использует сжатие на уровне HTTP
  • Отразить пользовательский ввод в телах ответа HTTP
  • Отразить секрет (например, токен CSRF) в телах ответа HTTP

Также представляется, что шаги по смягчению в порядке эффективности:

  • Отключение HTTP-сжатия
  • Разделение секретов с пользовательского ввода
  • Рандомизирующие секреты за запрос
  • Маскировка секретов (эффективное рандомизация с помощью XORing со случайным секретом для каждого запроса)
  • Защита уязвимых страниц с помощью CSRF
  • Спрятать длину (путем добавления случайного числа байтов к ответам)
  • Ограничение скорости запросов

В представлении моей страницы я @Html.AntiForgeryToken вспомогательный метод @Html.AntiForgeryToken который создает соответствующие входные данные и @Html.AntiForgeryToken cookie при посещении формы. От взгляда на то, что делает этот вспомогательный метод, создается впечатление, что каждый раз, когда загружается страница, создается новый уникальный маркер, который, как представляется, соответствует пункту 3 в шагах смягчения, а действие использования токена CSRF в первую очередь соответствует точке 5,

Отключение HTTP-сжатия, по-видимому, широко расценивается как "не очень хорошее для производительности" и из некоторых других ресурсов, которые я читал, укорачивание длины может вызвать проблемы для таких функций, как загрузка файлов (что используется на этой странице)


Итак, после всего этого, единственное, что я могу сейчас по-настоящему рассмотреть, - это разделение секретов от пользовательского ввода. Я думал о том, что, возможно, попытаюсь поставить значение токена CSRF на сеанс..... или я полностью переосмыслил это и является текущей версией "@Html.AntiForgeryToken", достаточно подходящей для защиты нас?

Ответ 1

Для этого недостаточно анти-подделки /CSRF-токена? В MVC вы можете использовать Html.AntiForgeryToken(). Я использовал его раньше в своих приложениях MVC, и это смягчает нарушение.

Ответ 2

Да, если токен CSRF случайный, то он смягчает атаку. Если вы не отправляете какие-либо другие секреты с пользовательскими формами ввода, вы должны быть в порядке.

С другой стороны ,

Также отключить сжатие для страниц, на которых есть пользовательский ввод. Checkout this answer Можно ли выборочно отключить сжатие gzip в ASP.NET/IIS 7?