SerafimArts
@SerafimArts
Senior Notepad Reader

Почему csrf не кладут в Cookie?

Зачастую, для упрощения работы - токен вешают в meta теги и выдирают его, когда требуется. Пишут хелперы или другие обёртки.

Но вот что подумалось - я никогда не видел, чтоб csrf сохраняли в кукисах (даже http-only). Ведь это действительно проще в использовании - в будущем не потребуется никаких телодвижений для отправки данных (пусть и таких пустяковых). Есть какие-то грабли, о которых сразу не догадаешься?
  • Вопрос задан
  • 3523 просмотра
Пригласить эксперта
Ответы на вопрос 3
@apasen
Ее же можно подделать.
Ответ написан
@DaNHell
Change the world
Так вообще-то именно в этом и суть)
Токен генерируется при каждом запросе новый и устанавливается в cookies пользователя а также добавляется в параметры форм и ссылок на странице:
Token.png
И затем при получении каждого запроса сравнивается токен из куков и токен указанный в параметрах формы. И если они одинаковы, то источник запроса легален. Затем токен генерируется снова, и снова устанавливается в куки, и т.д. по кругу.
Ответ написан
BelirafoN
@BelirafoN
А кто знает как это реализовано в Laravel? Как-то не укладывается работа Laravel с csrf-токеном в приведенную схему.

Токен в cookies не кладется, там лежит только сессия, которая, ясен фиг, не перегенерируется между запросами. CSRF-токен, которым подписана форма, или вся страница (в мета-тэге) тоже статичен, иначе не работали бы ajax-запросы.

Выходит, что в Laravel схема подписи csrf-токеном неполноценна. Значительно упрощенный вариант?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы