Ajax и CSRF

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

Ajax и CSRF

Сообщение mnzi » 2017.04.12, 08:04

Вопрос по поводу CSRF

Делаю отправку формы с помощью ajax

Форму генерирую с помощью

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

use yii\helpers\Html;

<?= Html::beginForm('','post',['class'=>'add-customer-form']) ?>

      <?= Html::label("Имя",'cus_name'); ?>
      <?= Html::textInput('cus_name') ?>
      и.т.д.

отправляю запрос ajax

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

  aNewCustomer = $(".add-customer-form").serializeArray();
  $.ajax({
      type: 'POST',
      url: '/schedule/add-customer-aj/',
      dataType: 'json',
      data: {is_ajax:1,aNewCustomer},
      success: function(data){
      }
  })
  
На сервер приходит в таком виде:

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


Array
(
    [is_ajax] => 1
    [aNewCustomer] => Array
        (
            [0] => Array
                (
                    [name] => _csrf-frontend
                    [value] => Z0lVN2Z6MksvGjdnETUHfw8jEGISAEsEMn0/dFAbAA0QMRxEHE15CQ==
                )

            [1] => Array
                (
                    [name] => cus_name
                    [value] => some-value
                )
        )

)
Вопрос. Как теперь проверить на сервере csrf? Есть какой-то стандартный способ.
В гугле искал, ничего вразумительного не нашел.

Спасибо за ответы.

urichalex
Сообщения: 957
Зарегистрирован: 2015.08.07, 11:03

Re: Ajax и CSRF

Сообщение urichalex » 2017.04.12, 09:06

CSRF проверяется еще до того, как вы ловите запрос в контроллере. Так что не переживайте.
И отправлять is_ajax не обязательно. Проверить запрос на аякс можно так Yii::$app->getRequest()->getIsAjax() (Yii::$app->request->isAjax)

mnzi
Сообщения: 31
Зарегистрирован: 2012.11.14, 01:27

Re: Ajax и CSRF

Сообщение mnzi » 2017.04.12, 09:17

Подскажите пожалуйста, где можно увидеть ошибку, если ключ CSRF будет не правильным или будет отсутствовать.

Я не понимаю. Я отправляю форму через ajax никак не связанный с Yii2, в любом случае получаю $_POST, одним из параметров CSRS, где гарантия что он правильный?

urichalex
Сообщения: 957
Зарегистрирован: 2015.08.07, 11:03

Re: Ajax и CSRF

Сообщение urichalex » 2017.04.12, 09:18

mnzi писал(а):
2017.04.12, 09:17
Подскажите пожалуйста, где можно увидеть ошибку, если ключ CSRF будет не правильным или будет отсутствовать.

Я не понимаю. Я отправляю форму через ajax никак не связанный с Yii2, в любом случае получаю $_POST, одним из параметров CSRS, где гарантия что он правильный?
Если он будет неправильный, вы получите ошибку 400

Ответить