Генерация CSRF токена или есть другие варианты на php?
У меня на сайте есть свое API по адресу site.com/api.php
Во фронтенде , на разных страницах есть куча ajax обработчиков, которые при каких-либо действиях обращаются к этим API. Мне нужно, что бы мое Апи принимало в POST запросе, какой-нибудь токен и сравнивало его, если токен верен, пускало данные в обработку. Но, каким образом, мне в api.php и на других страницах генерировать этот токен, что бы он был идетичен. И еще, что бы этот ключ мог работать в двух вкладках. Я слышал что $_SESSION['csrf_token'] генерируется при открытии каждой новой страницы.
Генерируете случайный токен, помещаете его в сессию / кеш / базу и отправляете на страницу в какой-нибудь метатег в head, например.
При отправке POST запроса фронт берёт этот токен и отправляет на бэк.
Бэк проверяет его наличие и срок его действия. Если токен был валидный, то в ответ генерируете новый и снова отправляете на страницу, если нет - заставляете пользователя обновить страницу. В обоих случаях токен инвалидируется и удаляется.
Один раз в 10 / 100 / 1000 проверок токена запускаете чистильщик невалидных токенов с истёкшим сроком действия.