Как правило, достаточно иметь один токен на сессию , так называемый токен на сессию :
В общем, разработчикам необходимогенерировать этот токен только один раз для текущего сеанса.После первоначальной генерации этого токена значение сохраняется в сеансе и используется для каждого последующего запроса до истечения сеанса.
Если вы хотите еще больше повысить безопасность, вы можете использовать один токен накаждая форма / URL ( токен для каждой формы ), чтобы смягчить воздействие, когда один токен протекает (например, XSS ), поскольку злоумышленник сможет только успешно атаковать эту конкретную форму / URL.
Но с использованием токенов для каждого запроса , т.е.е.токены, которые меняются при каждом запросе, скорее снижают удобство использования веб-сайта, поскольку ограничивают параллельный просмотр:
Чтобы еще больше повысить безопасность этого предлагаемого дизайна, рассмотрите возможность рандомизации токена CSRF […] для каждого запроса,Реализация этого подхода приводит к генерации токенов на запрос в отличие от токенов на сеанс.Обратите внимание, однако, что это может привести к проблемам с удобством использования.Например, функция браузера кнопки «Назад» часто затруднена, так как предыдущая страница может содержать токен, который больше не действителен.Взаимодействие с этой предыдущей страницей приведет к ложному положительному событию безопасности CSRF на сервере.
Поэтому я рекомендую использовать токены для сеанса или токены для формы.