Ответ 1
Причина, по которой это безопасно, и maliciousSite.com
не может просто сделать GET
, украсть токен, а затем сделать POST
в том, что запрос выполняется браузером пользователя, а не сервером в maliciousSite.com
. Все данные, возвращаемые с fakebank.com
, возвращаются в браузер пользователя, а не на сервер maliciousSite.com
. Если maliciousSite.com
выполняет GET для получения токена, это будет другой токен, который был выдан пользователю. maliciousSite.com
не может установить этот файл cookie в пользовательский браузер для отправки на fakebank.com
из-за ограничений на один домен.
Атака CSRF POST
работает, обманывая пользовательский браузер, запрашивая fakebank.com/withdrawForm.html
напрямую, используя правильно сформированный запрос POST
. Сервер fakebank.com
счастливо выполняет запрошенный POST
, тем самым перенося средства, используя параметры, предоставленные в теле POST
(которые включают в себя адрес назначения, принадлежащий злоумышленнику, который был помещен туда maliciousSite.com
). Серверу maliciousSite.com
не нужно видеть возвращенные данные, поскольку действие было выполнено (если только fakebank.com
не использует эти токены CSRF, которые maliciousSite.com
не может знать, если только это не было разглашено каким-либо образом Он не может просить об этом). Если fakebank.com
использует токены CSRF, то maliciousSite.com
отправит запрос POST
, в котором отсутствует токен, что указывает на потенциальную атаку CSRF.
Уязвимость этого метода включает использование токена CSRF, который не является достаточно секретным и каким-то образом разглашается. Кроме того, если токен CSRF не является достаточно случайным, то maliciousSite.com
может угадать его. Кроме того, если есть слабость в применении браузером той же политики домена, это может быть использовано. Вообще говоря, современные браузеры не уязвимы для этого.
Пожалуйста, дайте мне знать, если это недостаточное объяснение, и я попытаюсь сформулировать его немного лучше для вас.