Проблема токена CSRF с CodeIgniter - PullRequest
8 голосов
/ 20 марта 2011

У меня очень странная проблема с защитой CSRF в CodeIgniter. Я убедился, что использую form_open для запуска своей формы, csrf_protection имеет значение true в файле конфигурации, и я также убедился, что скрытые поля имени и значения csrf соответствуют cookie csrf, как показано здесь: http://d.pr/3cfB.

Что происходит, когда я отправляю форму, я получаю «Обнаружена ошибка. Запрошенное вами действие не разрешено». ошибка и не уверен почему. Форма отлично работает, когда я выключаю csrf_protection.

Что еще страннее, я использую библиотеку tank_auth для своей аутентификации, а также форму form_open для формы входа. Я проверил, чтобы убедиться, что в форме входа есть скрытое поле csrf, когда csrf_protection включен, и я смог отправить форму и войти без проблем.

Мысли о том, что я могу сделать для устранения этой проблемы?

Ответы [ 2 ]

2 голосов
/ 20 марта 2011

Начнем с того, что класс сеанса ожидает токен с именем «csrf_token_name», а не с именем «csrf_salemarked_token $ ...».

В этом сообщении блога рассматривается AJAX с защитой CSRF в Codeigniter 2.0.

Tank_auth получает токен из скрытого поля формы ввода, а не из файла cookie.Ваши запросы AJAX должны получить токен из скрытого поля, если оно доступно, или файл cookie, если формы нет.

1 голос
/ 20 марта 2011

Я нашел проблему.В одной из моих пользовательских библиотек у меня есть parent :: _ sanitize_globals (), который, очевидно, был причиной ошибки.Я где-то читал, что если у меня включена фильтрация xss, мне не нужно выполнять глобальную очистку.

...