Несоответствия в работе парсеров возникает, когда два или более парсера, обрабатывающих одни и те же входные данные, выдают два или более различных результата.
Есть заголовки вроде
Content-Type. По RFC часть полей считается singleton (ожидается одно значение), часть — list-based (возможны несколько значений).Проблема начинается, когда:
⚫️ бэкенд валидирует заголовок как singleton,
⚫️ браузер интерпретирует его как список,
⚫️ или наоборот.
В итоге два участника цепочки видят разный «эффективный» MIME-тип.
Пример концепции:
Content-Type: application/json; , text/html
Что происходит:
✅ Бэкенд проверяет и видит:
application/json → пропускаем как JSON✅ Браузер парсит и получает:
text/html✅ Ответ рендерится как HTML
Получаем MIME confusion → XSS 💨
Пост вдохновлен этим исследованием 🔚

