Ajax request-header manipulation

Что такое манипуляции заголовками Ajax‑запроса?

Использование Ajax позволяет веб‑сайту выполнять асинхронные запросы к серверу, чтобы веб‑приложения могли динамически изменять содержимое страницы без необходимости перезагружать всю страницу. Однако уязвимости манипуляций заголовками Ajax‑запроса возникают, когда скрипт записывает контролируемые атакующим данные в заголовок запроса Ajax, который выполняется с использованием объекта XMLHttpRequest. Атакуюзий может использовать эту уязвимость, чтобы сконструировать URL, который при посещении установит произвольный заголовок в последующем Ajax‑запросе. Затем это может быть использовано как отправная точка для объединения с другими типами атак, тем самым увеличивая потенциальную серьёзность уязвимости.

Каковы последствия манипуляций заголовками Ajax‑запроса?

Потенциальное воздействие уязвимости зависит от роли конкретных HTTP‑заголовков в серверной обработке Ajax‑запроса. Если заголовок используется для управления поведением, возникающим в результате Ajax‑запроса, атакующий может заставить пользователя выполнить непреднамеренные действия. Воздействие также зависит от того, что именно атакующему удаётся внедрить в заголовки.

Какие приёмники могут привести к уязвимостям манипуляции заголовками Ajax‑запроса?

Ниже приведены некоторые из основных приёмников, которые могут приводить к уязвимостям манипуляции заголовками Ajax‑запроса на основе DOM:

XMLHttpRequest.setRequestHeader()
XMLHttpRequest.open()
XMLHttpRequest.send()
jQuery.globalEval()
$.globalEval()

Как предотвратить манипуляции заголовками Ajax‑запроса

В дополнение к общим мерам, описанным на странице DOM-based, следует избегать предоставления данным из любых ненадежных источников возможности динамически задавать заголовки Ajax‑запросов.

Last updated