Недавно я узнал о атаках CSRF и был рад узнать, что защита CSRF была добавлена в Codeigniter v 2.0.0.
Я включил эту функцию и увидел, что в формах добавлен скрытый ввод с токеном, и я предполагаю, что он хранит токен в сеансе. В запросах POST CI автоматически сравнивает токены или мне приходится вручную это делать?
Маркер CSRF добавляется в форму как скрытый ввод только при использовании функции form_open()
.
Куки-файл с значением токена CSRF создается классом Security и при необходимости восстанавливается для каждого запроса.
Если существуют данные $ _POST, cookie автоматически проверяется классом Input. Если размещенный токен не соответствует значению cookie, CI покажет ошибку и не обработает данные $ _POST.
Таким образом, в принципе, все автоматическое – все, что вам нужно сделать, это включить его в свой $config['csrf_protection']
и использовать form_open()
для вашей формы.
Хорошая статья, которую я нашел, объясняет это очень хорошо: https://beheist.com/blog/csrf-protection-in-codeigniter-2-0-a-closer-look.html
Когда защита csrf включена, класс безопасности проверяет этот токен автоматически (он сравнивает токен POST с токеном COOKIE)
См. Эту ссылку. Используемые токены CSRF с помощью вспомогательного элемента формы или вручную.
В статье объясняется, как работать с токенами CSRF в
В этой статье также объясняется, как « Отключить CSRF для URL-адреса cetain (которые используются как URL-адреса веб-службы) »