Yii2 - Использование CSRF токена
Для тех, кто еще не знаком с понятием CSRF токен и не понимает, для чего его стоит использовать, вот ссылка для ознакомления.
Одно из приятных новшеств фреймворка Yii2 - это проверка CSRF токена, которая включена по-умолчанию.
Если вы будете использовать обычную HTML форму или обычный AJAX запрос для отправки данных на сервер, вы получите ошибку следующего содержания: Bad Request (#400): Unable to verify your data submission.
Эта ошибка возникает в том случае, если при отправке данных на сервер не было указано значение CSRF-токена в одном из параметров запроса.
Разумеется, вы можете отключить данную опцию (настройку) вашего приложения в конфигурационном файле yii-фреймворка или в текущем контроллере (обработчике запроса), но я категорически не советую вам этого делать.
Несколько способов использования CSRF токена
1. Используйте виджет для создания форм, чтобы автоматически включить в форму скрытое поле со значением CSRF токена;
//
use yii\bootstrap\ActiveForm;
$form = ActiveForm :: begin(['id' => 'custom-form']);
echo $form->field($model, 'username')->textInput();
echo $form->field($model, 'password')->passwordInput();
ActiveForm :: end();
//
2. Указывайте значение параметра CSRF токена в HTML форме;
//
use yii\helpers\Html;
echo Html :: hiddenInput(\Yii :: $app->getRequest()->csrfParam, \Yii :: $app->getRequest()->getCsrfToken(), []);
//
3. С помощью функции csrfMetaTags() добавьте в шаблон мета-тег со значением CSRF токена для использования его в ajax-запросах;
//
use yii\helpers\Html;
echo Html :: csrfMetaTags();
//
Для тех, кто не переживает о безопасности приложения (проекта), ниже привожу код для отключения проверки CSRF-токена.
//
// Отключение в конфигурационном файле
'components' => [
'request' => [
'enableCsrfValidation' => false,
],
],
// Отключение в контроллере
public function beforeAction($action)
{
$this->enableCsrfValidation = false;
return parent :: beforeAction($action);
}
//
Вам требуются услуги или консультация специалиста по веб-разработке?
Свяжитесь со мной