Защита Codeigniter CSRF без проверки формы - PullRequest
2 голосов
/ 28 июля 2011

Я включил защиту csrf в Codeigniter. Используя form_open(), я могу создать скрытое значение csrf, которое должно быть проверено в моем контроллере. Однако я не отправляю поля ввода, а просто передаю параметр URL через действие формы.

В моем контроллере мне не нужно устанавливать правила проверки, поэтому у меня есть

function delete_post($post_id = '') //post id passed via 3rd URL segment
{ 
    if (is_int($post_id) && valid_post($post_id)) //valid_post() returns true if post id exists
    {   
       $this->Posts_model->delete_post_model($post_id);         
       redirect('site');  
    }                   
}

Защита от Csrf не работает без правил проверки. Можно ли сделать эту работу, не пропуская post_id через скрытый ввод?

1 Ответ

3 голосов
/ 28 июля 2011

Как вы можете видеть в коде класса безопасности , защита CSRF работает только с данными POST (проверка формы также работает с POST данными на самом деле).

Вам следует воспользоваться способом CodeIgniter и использовать запрос POST. Если вы используете AJAX, просто измените GET на POST, а если вы используете форму, установите метод на post. Если вы не можете этого сделать, вам придется бороться с кодом CodeIgniter, поэтому попробуйте объяснить, почему. :)

...