динамический XSRF с JavaScript - PullRequest
2 голосов
/ 09 февраля 2011

Мне просто интересно, можно ли xsrf-атаковать так:

<form ...>
<input type="hidden" name="token" value="xsrf-generated-token" />
... fields+submit button ...
</form>

с использованием JavaScript - как:

  • злоумышленник доставляет меня на свой сайт
  • затем он вызывает javascript с помощью GET / admin / users / test / edit
  • он анализирует токен xsrf (используя регулярные выражения - dom не будет работать из-за политики того же происхождения)
  • и отправить подписанное редактирование ...

также не должен быть подписан токеном GET / admin / users / test / edit?

1 Ответ

2 голосов
/ 09 февраля 2011

Причина в том, что обычные запросы ajax (с использованием XHR) ограничены той же политикой происхождения . Таким образом, это означает, что для того, чтобы это работало, вам сначала необходимо использовать уязвимость XSS, прежде чем вы сможете выполнить уязвимость CSRF.

Теперь может показаться, что JSONP может быть способом обойти это. Но это не так. Поскольку JSONP использует теги сценария, результат запроса будет передан сразу. А поскольку результатом является HTML, а не JS, синтаксическая ошибка должна выдать .

Таким образом, не должно быть способа получить токен без предварительной компрометации самого сайта. Но следует отметить две вещи, которые зависят от:

  1. Все браузеры корректно реализуют одинаковую защиту политики происхождения

  2. Вы не передаете токен в форму через JSON (поскольку, если бы вы были, JSONP мог бы прочитать его).

...