Yii2 - як відключити CSRF валідацію токена

  • Останнє оновлення: 3 Квітня 2024 р.
  • Перегляди: 28
  • Автор: Адмін
Yii2 - як відключити CSRF валідацію токена

Колеги всім привіт.

У сьогоднішній статті ми поговоримо про те як можна вимкнути перевірку токена CSRF в Yii2. CSRF означає між сайтова підробка запиту коли від вашого імені відправляється запит на сайт, користувачем якого ви є. Якраз від таких атак одним з варіантів захисту від підробки запиту може бути спеціальний токен, який генерується в рядок і відправляється разом із запитом. Після надсилання запиту на ваш сервер цей токен перевіряється на коректність.

Перевірка CSRF токена за замовчуванням включена.

Якщо ви відправите на сервер звичайну HTML форму або звичайний AJAX запит, то ви отримаєте помилку - Bad Request (#400): Unable to verify your data submission. Ця помилка буде з'являтися завжди під час відправки даних на сервер не буде вказано значення CSRF токена.

 

Ось так виглядатиме ваш токен на сайті.

yii2_disable_csrf_token

І при кожному перезавантаженні сторінки цей токен змінюватиметься.


 

Перший варіант відключити перевірку CSRF токена в Yii2 можна на рівні якої-небудь дії. Для цього скористайтесь нижченаведеним кодом:

public function beforeAction($action)
{
    if (in_array($action->id, ['login'])) {
        $this->enableCsrfValidation = false;
    }
    return parent::beforeAction($action);
}

yii2_disable_csrf_token

У цьому варіанті метод beforeAction завжди буде викликатися перед усіма діями в даному контролеру, і якщо якась з дій збігається з ім'ям login то для того дії перевірка CSRF токена буде відключена.


 

Є ще один варіант, який підходить для тих людей, які не переживають за безпеку своєї програми. Перевірку  CSRF токена можна відключити відразу для всього сайту, для цього вам потрібно в конфігураційному файлі web.php додати параметр enableCsrfValidation зі значенням false.

'request' => [
    'enableCsrfValidation' => false,
],

yii2_disable_csrf_token


 

Всім дякую, я сподіваюся, що вам моя стаття хоч чимось допомогла.

 

СХОЖІ СТАТТІ

Як згенерувати випадкове та унікальне число в PHP
PHP Чи є в масиві потрібне значення - in_array