yii2 CSRF не проверяет хост - PullRequest
0 голосов
/ 15 мая 2018

Еще одна проблема, с которой я сталкиваюсь, связана с тем, что мой сайт создан в yii2, и CSRF включен, но когда я копирую полную форму, включая токен csrf, создаю новый html-файл вне сервера и отправляю форму извне сервера, она принимает мою форму.

Каков ожидаемый результат?

это должно дать разрешение на выдачу

Что вы получаете вместо этого?

он успешно принимает форму, не уверен, что мне не хватает какой-либо конфигурации или что

Yii версия 2.0.6

PHP версия 5.5.38

Операционная система CentOS версии 6.9 (финальная версия)

Ответы [ 2 ]

0 голосов
/ 15 мая 2018
Защита

CSRF основана на том факте, что сторонний веб-сайт не должен знать токен CSRF вашего пользователя.Если вы выставите токен CSRF, вся защита не будет работать.Это сделано специально.

Если вы хотите заблокировать запросы от ненадежных доменов, вам, вероятно, следует использовать CORS .

0 голосов
/ 15 мая 2018

Это происходит потому, что, как вы сказали, вы используете CRSF.Если вы хотите принимать данные из другого домена, вам нужно отключить CRSF хотя бы для этого конкретного запроса.Либо так:

class MyController extends Controller
{
    public $enableCsrfValidation = false;

, либо так:

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

Из поваренной книги: https://yii2 -cookbook.readthedocs.io / csrf /

А также из официальных документов: https://www.yiiframework.com/doc/api/2.0/yii-web-controller#$enableCsrfValidation-detail

...