Проблема с CSRF

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

Проблема с CSRF

Сообщение wra »

Проблема при установке параметра в конфиге:

Код: Выделить всё

'request'=>array(
    'enableCsrfValidation'=>true,
), 
После этого невозможно удалить запись (например статью или комментарий в моем случае). Вываливает 400-ошибку: «Невозможно определить CSRF.»
Есть идеи как это решить?
Аватара пользователя
Ozzy
Сообщения: 269
Зарегистрирован: 2009.04.02, 15:09
Откуда: Украина, Одесса

Re: Проблема с SCRF

Сообщение Ozzy »

Код: Выделить всё

<input type="hidden" value="<?php echo Yii::app()->request->csrfToken; ?>" name="YII_CSRF_TOKEN">
Мой маленький блог - http://dbhelp.ru
wra
Сообщения: 37
Зарегистрирован: 2009.10.28, 13:48

Re: Проблема с CSRF

Сообщение wra »

Спасибо. Идея понятна. С реализацией проблема...
Удаление идет по ссылке, на которую наверчена отправка jQuery-формы:

Код: Выделить всё

/*<![CDATA[*/
jQuery(document).ready(function() {
jQuery('#yt0').click(function(){if(confirm('Точно удалить?')) {jQuery.yii.submitForm(this,'/articles/delete/id/10',{});return false;} else return false;});
});
/*]]>*/
 
Подскажите каким образом сюда можно вставить скрытое поле? Или как то по другому делается?
Аватара пользователя
Ozzy
Сообщения: 269
Зарегистрирован: 2009.04.02, 15:09
Откуда: Украина, Одесса

Re: Проблема с CSRF

Сообщение Ozzy »

Ну так это полюбому submitForm, значит где то вверху форма таки определяется?
Мой маленький блог - http://dbhelp.ru
wra
Сообщения: 37
Зарегистрирован: 2009.10.28, 13:48

Re: Проблема с CSRF

Сообщение wra »

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

Re: Проблема с CSRF

Сообщение samdark »

Какой код генерирует всё это дело?
wra
Сообщения: 37
Зарегистрирован: 2009.10.28, 13:48

Re: Проблема с CSRF

Сообщение wra »

Вот этот:

Код: Выделить всё

/*<![CDATA[*/
jQuery(document).ready(function() {
jQuery('#yt0').click(function(){if(confirm('Точно удалить?')) {jQuery.yii.submitForm(this,'/articles/delete/id/10',{});return false;} else return false;});
});
/*]]>*/
 
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Проблема с CSRF

Сообщение samdark »

Нет, это то, что получается в итоге. Должен быть PHP-код, который это нагенерил.
wra
Сообщения: 37
Зарегистрирован: 2009.10.28, 13:48

Re: Проблема с CSRF

Сообщение wra »

Вот генерация:

Код: Выделить всё

<li><?=CHtml::linkButton('удал',array(
    'submit'=>array('articles/delete','id'=>$Article->articleId),
    'confirm'=>"Точно удалить?",'class'=>'delete'))?></li>
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: Проблема с CSRF

Сообщение Ekstazi »

Пишу с коленки. Передавай CRRF через параметр params к linkButton
wra
Сообщения: 37
Зарегистрирован: 2009.10.28, 13:48

Re: Проблема с CSRF

Сообщение wra »

Добавление в linkButton:

Код: Выделить всё

'YII_CSRF_TOKEN'=>Yii::app()->request->csrfToken
дало то, что в саму ссылку дабавился этот параметр со значением. Но это не помогло создать скрытое поле (я так понимаю и не должно было). Поясните пожалуйста на примере как добавляется скрытое поле а форму, которая генерится через linkButton(). Либо если можно передавать не только через скрытое поле, то поясните как…
Аватара пользователя
delvin
Сообщения: 85
Зарегистрирован: 2009.11.13, 15:29

Re: Проблема с CSRF

Сообщение delvin »

linkButton в этом случае создает post-запрос динамически, т.е. никаких форм не создается и не отправляется.
Попробуй так:

Код: Выделить всё

<li><?=CHtml::linkButton('удал',array(
    'submit'=>array('articles/delete','id'=>$Article->articleId),
    'params'=>array('YII_CSRF_TOKEN' => Yii::app()->request->csrfToken,),
    'confirm'=>"Точно удалить?",'class'=>'delete'))?></li>
wra
Сообщения: 37
Зарегистрирован: 2009.10.28, 13:48

Re: Проблема с CSRF

Сообщение wra »

Отлично сработало. Огромное спасибо!
Ответить