# Ajax request-header manipulation

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

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

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

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

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

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

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

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

В дополнение к общим мерам, описанным на странице [DOM-based](https://wr3dmast3r.gitbook.io/portswiggerfundamental/client-side/dom-based), следует избегать предоставления данным из любых ненадежных источников возможности динамически задавать заголовки Ajax‑запросов.
