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