В Yii фреймворке реализована автоматическая защита POST запросов от CSRF атак, но если вдруг требуется использовать GET запросы, то этот механизм не работает. Для GET запросов метод validateCsrfToken компонента yii\web\Request всегда возвращает true.

В Yii фреймворке реализована автоматическая защита POST запросов от CSRF атак, но если вдруг требуется использовать GET запросы, то этот механизм не работает. Для GET запросов метод validateCsrfToken компонента yii\web\Request всегда возвращает true.

Для каждого GET запроса проверку придется реализовать вручную, например так:

[code] $token = Yii::$app->request->get(Yii::$app->request->csrfParam);

$token = Yii::$app->security->unmaskToken($token);

$trueToken = Yii::$app->security->unmaskToken(Yii::$app->request->csrfToken);

if (!$token || $token != $trueToken) { throw new ForbiddenHttpException; } [/code]

Ссылка на защищенный метод теперь должна содержать CSRF параметр, например так:

[code] Html::a('Label', ['/url', Yii::$app->request->csrfParam => Yii::$app->request->csrfToken]) [/code]

18.06.2018