Я построил защиту CSRF в своем приложении, просто создав случайный токен на странице каждый, поставив его в сеанс и связав токен с <body>
атрибут тега:
<body data-csrf-token="csrf_GeJf53caJD6Q5WzwAzfy">
Затем на каждом этапе action или ajax-запрос я просто извлекаю токен из тега body и отправляю его.
Это отлично работает, за исключением огромной проблемы. Пользователи открывают несколько вкладок приложения, и я вижу токен-коллизии. Например, пользователь загружает первую страницу и генерирует токен, затем они переключают вкладки, загружают другую страницу, которая генерирует новый токен. Наконец, они возвращаются на первую страницу и отправляют действие формата. Это приводит к недопустимой ошибке токена CSRF.
Каков наилучший способ перепроектировать это, чтобы предотвратить столкновение с несколькими вкладками, сохраняя при этом как можно более безопасным.
Просто генерирует один токен при правильном входе в систему, вместо того, чтобы генерировать новый токен при каждой загрузке страницы?