Странное поведение csrf валидаци

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
nova9469
Сообщения: 9
Зарегистрирован: 2019.11.28, 13:27

Странное поведение csrf валидаци

Сообщение nova9469 »

Не уверен, что данный вопрос должен относиться к этому разделу, но нужный раздел я так и не нашёл. Если что, заранее прошу прощения.
О проблеме:
На полуготовом проекте внезапно рушится csrf валидаця в бэкэнде. Обычная отправка форм методом POST приводит к известной ошибке: Не удалось проверить переданные данные.
Проверил, что csrf токен генерируется, где нужно в странице вставляется, в куке _csrf значение обновляется. Все открытия и закрытия $this->beginBody(), пэйдж и т.д есть. Работаю через activeForm.
Дальше проверяю саму валидацию, выясняется, что csrf токен при валидации пустой, т.е. из формы токен приходит, а из куки почему-то не достаётся. Проверяю механизм создания кук и их извлечения. Использую метод yii, создаю куку. Далее пытаюсь авторизвоаться, т.е. отправляю форму с токеном csrf. Дебажу извлечение кук, так вот кука которую я создал вручуную нормально отображается среди полученных кук, а так которая _csrf, после расшифровки имеет пустое тело и поэтому в коллекцию не включена, соответственно при валидации создаётся новый токен и валидация равна false.
Я совершенно не понимаю как это всё могло навернуться, так как я последнюю неделю работал с интрефейсной частью бэкэнда больше связанной с js скриптами. Пожалуйста помогите.
nova9469
Сообщения: 9
Зарегистрирован: 2019.11.28, 13:27

Re: Странное поведение csrf валидаци

Сообщение nova9469 »

Забыл написать. Для чистоты эксперимента, я развернул старую версию проекта и также отдебажил извлечение кук при csrf валидации запроса, так вот в старой версии эта кука номально распаковываются и значение используется для сравнения с токеном из пост запроса. От сюда есть предположение, что проблема на уровне шифровки куки с токеном, однако непонятно, как такое может быть, ведь ключ шифрования один и тот же. Может у кого есть идей, очень буду благодарен!
nova9469
Сообщения: 9
Зарегистрирован: 2019.11.28, 13:27

Re: Странное поведение csrf валидаци

Сообщение nova9469 »

А, пробовал сравнивать файлы версий проекта по содержимому, искал там где это может касаться этих процессов. Ничего не нашёл, как правило файлы либо не отличались, либо не было ничего, что могло нарушить соответствующие процессы. По крайней мере, я не нашёл.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Странное поведение csrf валидаци

Сообщение samdark »

Проект в git?
nova9469
Сообщения: 9
Зарегистрирован: 2019.11.28, 13:27

Re: Странное поведение csrf валидаци

Сообщение nova9469 »

Проект на зказ, поэтому в приватном варианте. Каким образом могу дать доступы?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Странное поведение csrf валидаци

Сообщение samdark »

Доступов не надо. Спросил потому как если бы был в git, можно было бы найти бинарным поиском через git bisect.
nova9469
Сообщения: 9
Зарегистрирован: 2019.11.28, 13:27

Re: Странное поведение csrf валидаци

Сообщение nova9469 »

Ясно. спасибо.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Странное поведение csrf валидаци

Сообщение samdark »

Ещё идеи — посмотреть версию фреймворка в старой версии, попробовать её в новой. Если полегчает — проблема с фреймворком. Если нет — тогда с проектом.
nova9469
Сообщения: 9
Зарегистрирован: 2019.11.28, 13:27

Re: Странное поведение csrf валидаци

Сообщение nova9469 »

Хорошо, спасибо!
nova9469
Сообщения: 9
Зарегистрирован: 2019.11.28, 13:27

Re: Странное поведение csrf валидаци

Сообщение nova9469 »

Ещё раз спасибо за идеи. Проблема была в проекте, не хватало в конфиге бэкэнда main.php строчки 'csrfParam' => '_csrf-backend'.
Интересно то, что я проследил историю фала в плоть до 11 ноября и ни в одной версии этой строки не было, проект нормально работал без неё.
Я начал разворачивать новую вресию yii и наживлять на неё функционал и обратил внимание на эту разницу в конфигах, добавил её и всё заработало. Вариант с git bisect у меня не прокатил, видно где-то напортачил с ветками и коммитами, поэтому лезли ошибки при откатах.
Ответить