Понимание CSRF

Я не понимаю, как использование «жетона вызова» добавит какую-либо профилактику: какую ценность следует сравнивать с чем?

ОтOWASP:

В общем случае разработчикам нужно генерировать этот токен только один раз для текущего сеанса. После первоначальной генерации этого токена значение сохраняется в сеансе и используется для каждого последующего запроса до истечения сеанса.

Если я правильно понимаю процесс, это то, что происходит.

Я вхожу вhttp://example.com и создается сеанс / cookie, содержащий этот случайный токен. Затем каждая форма включает скрытый ввод, также содержащий это случайное значение из сеанса, которое сравнивается с сеансом / файлом cookie при отправке формы.

Но что это делает? Разве вы не просто берете данные сеанса, помещаете их на страницу, а затем сравниваете их с точно такими же данными сеанса? Похоже на круговые рассуждения. В этих статьях говорится о следовании «политике одного и того же происхождения», но это не имеет смысла, потому что все CSRF-атаки имеют то же происхождение, что и пользователь, просто обманывая пользователя в совершении действий, которые он / она не намеревался.

Есть ли альтернатива, кроме добавления токена к каждому URL в виде строки запроса? Кажется очень уродливым и непрактичным, и делает закладки сложнее для пользователя.