
Ограничения размера cookie в ASP.NET Core в продакшене: причины и способы решения
kmoseenk 1 час назад Ограничения размера cookie в ASP.NET Core в продакшене: причины и способы решения 11 мин 2.9K Блог компании OTUS .NET * ASP * C# * Веб-разработка * Перевод Автор оригинала: Khalid Abuhakmeh...
В сфере искусственного интеллекта произошло заметное событие. kmoseenk 1 час назад Ограничения размера cookie в ASP. NET Core в продакшене: причины и способы решения 11 мин 2. 9K Блог компании OTUS .
NET * ASP * C# * Веб-разработка * Перевод Автор оригинала: Khalid Abuhakmeh Ситуация: в среде разработки всё работает отлично. Пользователь входит в систему, получает cookie, и никаких проблем не возникает. Но после деплоя в продакшен часть пользователей внезапно перестаёт проходить аутентификацию.
Технические детали
Никаких внятных сообщений об ошибке. Браузер либо молча завершает запрос с ошибкой, либо показывает что-то вроде «что-то пошло не так». В журналах появляются ошибки 431 Request Header Fields Too Large или запросы с корректной cookie сессии, которые приложение тут же отклоняет.
Причина почти всегда одна — размер cookie. В этой статье разберём, почему cookie аутентификации бесконтрольно разрастаются, как распознать симптомы проблемы и какие практические решения можно применить уже сейчас. Почему cookie аутентификации становятся огромнымиОбработчик cookie-аутентификации ASP.
NET Core по умолчанию сериализует весь объект ClaimsPrincipal в cookie. Каждое утверждение (claim), связанное с этим объектом, записывается в cookie. Для простого приложения это нормально: несколько утверждений спокойно помещаются в допустимый размер cookie.
Отраслевые последствия
Проблемы начинаются в следующих случаях:Слишком много утверждений. Приложение, которое преобразует каждый пользовательский атрибут в утверждение, очень быстро получает десятки записей: роли, разрешения, коды подразделений, флаги функциональности и метаданные арендатора. Каждое утверждение — это пара ключ-значение, и их объём растёт стремительно.
Особенно уязвимы системы с большим количеством ролей. Пользователь с 30 назначенными ролями может получить cookie, превышающую лимиты браузера, ещё до добавления остальных утверждений. Несколько схем аутентификации.
Если приложение одновременно использует несколько cookie-схем (cookie внешних провайдеров, cookie сессий приложения, схемы для мультиарендности), каждая схема создаёт собственную cookie. Даже если размер каждой отдельной cookie не превышает лимиты, суммарный объём заголовков в каждом запросе может превысить ограничение в 8 КБ, которое накладывают многие веб-серверы и прокси. ID-токены, хранящиеся в сессии.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.




