Как AntiForgeryToken защищает от csrf?

Сначала я нашёл простое описание в одной статейке.
При загрузке страницы содержащей форму с токеном сервер также задаёт клиенту куки содержащий этот токен.
При post запросе же на форму, клиент отсылает токен в теле запроса и указывает эту куки с токеном. И мол, сервер сравнивает при получении post запроса полученную куку и токен из формы, а защищает нас то что кука принадлежит домену и с других доменов она недоступна.
Так было написано в той статье.

Только вот, а что мешает создать xmlhttprequest, создать рандомный токен прописать его как куки для xhr, ну и в тело положить разумеется.
Сервер же не хранит какие токены он там создавал, только сравнивает токен из куки и из тела запроса, а значит можно же любой рандом использовать?

На самом деле конечно я уже проверил что там токен и кука по разному шифруются, но ведь можно разобрать алгоритм как они шифруются чтобы сгенерировать пару токен и куки такую, что сервер их провалидирует.

UPD: "а что мешает создать xmlhttprequest, создать рандомный токен прописать его как куки для xhr, ну и в тело положить разумеется."
Мешает то, что браузер не даст задавать куки через setRequestHeader() у кросс-доменного запроса.
  • Вопрос задан
  • 2565 просмотров
Пригласить эксперта
Ответы на вопрос 1
DrunkMaster
@DrunkMaster
Не знаю как в ASP.NET но обычно csrf-токен меняется при каждом запросе. Что у него внутри и как он зашифрован - неважно, важно то что он разный.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы