Понимание CSRF
Я не понимаю, как использование «жетона вызова» добавит какую-либо профилактику: какую ценность следует сравнивать с чем?
ОтOWASP:
В общем случае разработчикам нужно генерировать этот токен только один раз для текущего сеанса. После первоначальной генерации этого токена значение сохраняется в сеансе и используется для каждого последующего запроса до истечения сеанса.
Если я правильно понимаю процесс, это то, что происходит.
Я вхожу вhttp://example.com и создается сеанс / cookie, содержащий этот случайный токен. Затем каждая форма включает скрытый ввод, также содержащий это случайное значение из сеанса, которое сравнивается с сеансом / файлом cookie при отправке формы.
Но что это делает? Разве вы не просто берете данные сеанса, помещаете их на страницу, а затем сравниваете их с точно такими же данными сеанса? Похоже на круговые рассуждения. В этих статьях говорится о следовании «политике одного и того же происхождения», но это не имеет смысла, потому что все CSRF-атаки имеют то же происхождение, что и пользователь, просто обманывая пользователя в совершении действий, которые он / она не намеревался.
Есть ли альтернатива, кроме добавления токена к каждому URL в виде строки запроса? Кажется очень уродливым и непрактичным, и делает закладки сложнее для пользователя.