Codeigniter CSRF - как это работает
Недавно я узнал о атаках CSRF и был рад узнать, что защита CSRF была добавлена в Codeigniter v 2.0.0.
Я включил эту функцию и увидел, что в формах добавлен скрытый ввод с токеном, и я предполагаю, что он хранит токен в сеансе. В запросах POST CI автоматически сравнивает токены или мне приходится вручную это делать?
Ответы
Ответ 1
Тонер CSRF добавляется в форму как скрытый ввод только тогда, когда используется функция form_open()
.
Файл cookie с значением токена CSRF создается классом безопасности и при необходимости восстанавливается для каждого запроса.
Если существуют данные $_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
Ответ 2
При включенной защите безопасности csrf класс безопасности автоматически проверяет этот токен (он сравнивает токен POST с токеном COOKIE)
Ответ 3
Ссылка на эту ссылку - Используемые токены CSRF с помощью хелпера формы или вручную
В статье объясняется, как работать с токенами CSRF в
- открыть форму с помощью формы helper form_open() function
- в формах ajax
- Форматы сериализации ajax/jquery
В этой статье также объясняется, как " отключить CSRF для URL-адреса cetain (которые используются как URL-адреса веб-службы)"