Maksim (Ellrion)
Нет если только не хочешь принудительно делать всегда json ответ. И то я бы иначе сделал а не как там пишут
Niko
Andrey
Niko
Roman
Всем привет. Никак не могу понять, как заставить работать csrf токен для защиты от повторных пост-запросов. Кто-нибудь делал?
invariance
Эээ
invariance
Но ведь он работает из коробки
Roman
от защиты от повторных post-запросов? не работает
invariance
Каких ещё повторных
Roman
F5
invariance
Цсрф токен на все запросы действует
Roman
он один и тот же генерится на всю сессию
invariance
И?)
Roman
ну и
Roman
жмешь F5 - и запрос никак не фильтруется, что он уже был отправлен
Roman
сначала submit -> отправляешь форму. потом F5 и запрос с POST той же формы отправляется ещё раз
Roman
А если б токен каждый раз разный был - он бы по идее проверял бы, что запрос уже не действителен
Roman
но токен один и тот же
invariance
Всмысле не фильтруется)
invariance
Он фильтруется так же повторно
Roman
он по идее после проверки токена должен его новый генерить и помещать в сессию. Чтобы следующий запрос использовал новый. А если используется тот же, а в сессии его нет - он его б фильтровал.
Roman
нет
Roman
не фильтруется, в том и дело
invariance
У тебя просто два идентичных запроса
Roman
да, и нафиг они мне? )
invariance
Цсрф токен отправляется вместе с формой
Roman
да, именно
invariance
Roman
но вместе с генерацией формы - он должен давать новый токен, который помещать в сессию
invariance
Спроси у создателей браузеров?
Roman
ну так причем тут браузеры то?
Roman
епрст
invariance
Roman
вопрос был в чем? )
Roman
которую по идее пофиксили с VerifyCsrfToken мидлом
invariance
У тебя один и тот же юзер повторяет отправку формы
Roman
как мне казалось
Roman
нет
Roman
отправка формы - это отправка формы
invariance
Зачем ему заново генерить токен
invariance
Бля
Roman
а повтор запроса - это не из формы - просто тоже самое
Roman
ты почитай вопрос внимательно, поймешь)
invariance
А ты УВЕРЕН?
Roman
более чем
invariance
Соболезную
Roman
нашел решение - переопределить addCookieToResponse
Roman
но почему-то сначала отрабатывает генерация токена в хелпере, а потом уже миддл доходит до данного метода
invariance
Roman
мне то чего соболезновать? не можешь помочь, хочется пообщаться - так и скажи
Roman
блин
invariance
Это одно и тоже действие
Roman
ты явно не догоняешь проблемы)
Roman
одно дело - запрос из формы, которая сгенерилась и правильно отправилась
Roman
нет
Roman
а другое дело - Ф5
invariance
Ты какую то хуйню придумал
Roman
при Ф5 форма не генерилась, соответственно токен взят старый
Roman
мне кажется, тебе пора в бан за кол-во неадеквата и мата )
invariance
Не, не пора
invariance
invariance
Ты не шаришь, что такое csrf, да?
invariance
invariance
Или у тебя мидлвейр падает?
Roman
По ощущениям, миддл отрабатывает после попадания в контроллер, хотя должно быть наоборот
Roman
зачем
Roman
когда можно проверять токен и генерить новый после проверки
Roman
ну и при нажатии в браузере "назад" интересно, что будет
Roman
Нашел решение.
в миддлвейре VerifyCsrfToken переопределить addCookieToResponse:
if (!$this->isReading($request)) {
$request->session()->regenerateToken();
}
return parent::addCookieToResponse($request, $response);
Roman
Os
Иначе откуда взять новый
Os
Если ajax форма, то сделать endpoint на regenerate токен или возвращать новый после отправки
Roman
Иначе откуда взять новый
А он у кого-нибудь обновляется по-умолчанию в ой же сессии? Я почему-то думал, что он должен с каждой генерацией формы новый создаваться. А он один и тот же на протяжении сессии
Os
Os
15 минут условно
Frfr
Народ, а кто может на данном фреймворке написать сайт, точнее уже имеющийся контент перенести и доработать страницы ( верстка, дизайн, функционал)