Codeigniter избежать CRSF Attack - PullRequest
0 голосов
/ 26 июня 2018

Я пробовал два подхода:

- Использование form_open: с этим подходом я могу добавить поле с токеном CSRF в заголовке запроса, а также в куки.Но каждый раз генерируется один и тот же токен CSRF, и, следовательно, он не может предотвратить атаку.

Кроме того, мне нужно знать, кроме добавления токена на стороне клиента, есть ли необходимость проверять его на серверев сторону или это делается автоматически.

- Использование скрытого поля ввода с пользовательскими тегами формы: С этим я добавил случайный токен в качестве поля ввода, но все еще не смог избежать атаки.

Для второго подхода мне нужно знать об изменениях, которые мы должны сделать в файле Security.php, а также о том, нужно ли нам выполнять какую-либо проверку на стороне сервера.

1 Ответ

0 голосов
/ 27 июня 2018

Первый подход рекомендуется главным образом потому, что код CI - это хорошо проверенный, проверенный и проверенный код.Я предполагаю, что второй метод - это то, что вы намереваетесь написать сами.Если это так, вы изобретаете колесо без уважительной причины.

Используя CI-код, важно понимать, что хеш-значение токена не изменится, если вы не используете в config.php следующее:

$config['csrf_regenerate'] = TRUE;

Другая вещь, которую вам нужно знатьзаключается в том, что новый хеш будет сгенерирован только при запросе POST к серверу.Это хорошо, потому что необходимость защиты CSRF актуальна только для POST запросов.

Когда вы делаете несколько GET запросов, т.е. загружаете <form> несколько раз подряд, вы, скорее всего, будете видеть одно и то же значение хеша каждый раз.Но если вы отправите форму и затем перезагрузите ее, вы увидите новое хеш-значение.

Наконец, вы должны знать, что значения CSRF проверяются только для POST запросов и не проверяются для GET запросов.

Хеш-значение будет удалено из $_POST после его успешной проверки.

Все вышеперечисленное происходит автоматически, если вы используете настройку $config, показанную в сочетании с form_open().

...