Странное поведение csrf валидаци
Странное поведение csrf валидаци
Не уверен, что данный вопрос должен относиться к этому разделу, но нужный раздел я так и не нашёл. Если что, заранее прошу прощения.
О проблеме:
На полуготовом проекте внезапно рушится csrf валидаця в бэкэнде. Обычная отправка форм методом POST приводит к известной ошибке: Не удалось проверить переданные данные.
Проверил, что csrf токен генерируется, где нужно в странице вставляется, в куке _csrf значение обновляется. Все открытия и закрытия $this->beginBody(), пэйдж и т.д есть. Работаю через activeForm.
Дальше проверяю саму валидацию, выясняется, что csrf токен при валидации пустой, т.е. из формы токен приходит, а из куки почему-то не достаётся. Проверяю механизм создания кук и их извлечения. Использую метод yii, создаю куку. Далее пытаюсь авторизвоаться, т.е. отправляю форму с токеном csrf. Дебажу извлечение кук, так вот кука которую я создал вручуную нормально отображается среди полученных кук, а так которая _csrf, после расшифровки имеет пустое тело и поэтому в коллекцию не включена, соответственно при валидации создаётся новый токен и валидация равна false.
Я совершенно не понимаю как это всё могло навернуться, так как я последнюю неделю работал с интрефейсной частью бэкэнда больше связанной с js скриптами. Пожалуйста помогите.
О проблеме:
На полуготовом проекте внезапно рушится csrf валидаця в бэкэнде. Обычная отправка форм методом POST приводит к известной ошибке: Не удалось проверить переданные данные.
Проверил, что csrf токен генерируется, где нужно в странице вставляется, в куке _csrf значение обновляется. Все открытия и закрытия $this->beginBody(), пэйдж и т.д есть. Работаю через activeForm.
Дальше проверяю саму валидацию, выясняется, что csrf токен при валидации пустой, т.е. из формы токен приходит, а из куки почему-то не достаётся. Проверяю механизм создания кук и их извлечения. Использую метод yii, создаю куку. Далее пытаюсь авторизвоаться, т.е. отправляю форму с токеном csrf. Дебажу извлечение кук, так вот кука которую я создал вручуную нормально отображается среди полученных кук, а так которая _csrf, после расшифровки имеет пустое тело и поэтому в коллекцию не включена, соответственно при валидации создаётся новый токен и валидация равна false.
Я совершенно не понимаю как это всё могло навернуться, так как я последнюю неделю работал с интрефейсной частью бэкэнда больше связанной с js скриптами. Пожалуйста помогите.
Re: Странное поведение csrf валидаци
Забыл написать. Для чистоты эксперимента, я развернул старую версию проекта и также отдебажил извлечение кук при csrf валидации запроса, так вот в старой версии эта кука номально распаковываются и значение используется для сравнения с токеном из пост запроса. От сюда есть предположение, что проблема на уровне шифровки куки с токеном, однако непонятно, как такое может быть, ведь ключ шифрования один и тот же. Может у кого есть идей, очень буду благодарен!
Re: Странное поведение csrf валидаци
А, пробовал сравнивать файлы версий проекта по содержимому, искал там где это может касаться этих процессов. Ничего не нашёл, как правило файлы либо не отличались, либо не было ничего, что могло нарушить соответствующие процессы. По крайней мере, я не нашёл.
Re: Странное поведение csrf валидаци
Проект на зказ, поэтому в приватном варианте. Каким образом могу дать доступы?
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Странное поведение csrf валидаци
Доступов не надо. Спросил потому как если бы был в git, можно было бы найти бинарным поиском через git bisect.
Нравится Yii? Давайте сделаем его лучше!.
Re: Странное поведение csrf валидаци
Ясно. спасибо.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Странное поведение csrf валидаци
Ещё идеи — посмотреть версию фреймворка в старой версии, попробовать её в новой. Если полегчает — проблема с фреймворком. Если нет — тогда с проектом.
Нравится Yii? Давайте сделаем его лучше!.
Re: Странное поведение csrf валидаци
Хорошо, спасибо!
Re: Странное поведение csrf валидаци
Ещё раз спасибо за идеи. Проблема была в проекте, не хватало в конфиге бэкэнда main.php строчки 'csrfParam' => '_csrf-backend'.
Интересно то, что я проследил историю фала в плоть до 11 ноября и ни в одной версии этой строки не было, проект нормально работал без неё.
Я начал разворачивать новую вресию yii и наживлять на неё функционал и обратил внимание на эту разницу в конфигах, добавил её и всё заработало. Вариант с git bisect у меня не прокатил, видно где-то напортачил с ветками и коммитами, поэтому лезли ошибки при откатах.
Интересно то, что я проследил историю фала в плоть до 11 ноября и ни в одной версии этой строки не было, проект нормально работал без неё.
Я начал разворачивать новую вресию yii и наживлять на неё функционал и обратил внимание на эту разницу в конфигах, добавил её и всё заработало. Вариант с git bisect у меня не прокатил, видно где-то напортачил с ветками и коммитами, поэтому лезли ошибки при откатах.