Недавно (29.12.2011) Microsoft выпустила обновление, устраняющее несколько серьезных уязвимостей в системе безопасности .NET Framework. Одно из исправлений, внесенных в MS11-100 , временно смягчает потенциальную DoS-атаку, связанную с конфликтами хеш-таблиц. Похоже, это исправление нарушает работу страниц, содержащих много данных POST. В нашем случае на страницах с очень большими списками флажков. Почему это так?
Некоторые неофициальные источники, похоже, указывают на то, что MS11-100 устанавливает лимит в 500 для элементов обратной передачи. Я не могу найти источник Microsoft, подтверждающий это. Я знаю, что состояние просмотра и другие функции фреймворка частично снимают этот предел. Есть ли какой-либо параметр конфигурации, который управляет этим новым пределом? Мы могли бы отказаться от использования флажков, но в нашей конкретной ситуации это работает довольно хорошо. Мы также хотели бы применить патч, потому что он защищает от других неприятностей.
Неофициальный источник, обсуждающий ограничение в 500:
Бюллетень исправляет вектор атаки DOS, предоставляя ограничение на количество переменных, которые могут быть отправлены для одного HTTP POST запрос. Предел по умолчанию - 500, что должно быть достаточно для нормального веб-приложений, но все еще достаточно низкий, чтобы нейтрализовать атаку, поскольку описан исследователями безопасности в Германии.
РЕДАКТИРОВАТЬ: Исходный код с примером лимита (который составляет 1000, а не 500) Создайте стандартное приложение MVC и добавьте следующий код в главное представление индекса:
@using (Html.BeginForm())
{
}
Этот код работал до исправления. После этого не работает. Ошибка:
[InvalidOperationException: операция недействительна из-за текущего состояние объекта.]
System.Web.HttpValueCollection.ThrowIfMaxHttpCollectionKeysExceeded () +82 System.Web.HttpValueCollection.FillFromEncodedBytes (Byte [] bytes, Encoding encoding) +111
System.Web.HttpRequest.FillInFormCollection () +307