2011-07-28 6 views
2

Codeigniter에서 csrf 보호를 활성화했습니다. form_open()을 사용하여 내 컨트롤러에서 확인해야하는 숨겨진 csrf 값을 생성 할 수 있습니다. 그러나 나는 입력 필드를 제출하지 않고 양식 액션을 통해 URL 매개 변수를 전달한다. 내가 유효성 검사 규칙없이 작동하지 않는 것형식 유효성 검사없이 codeigniter csrf 보호

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을 전달하지 않고도이 작업을 수행 할 수 있습니까?

+0

양식을 게시 할 수 있습니까? –

답변

3

in the code of the Security class에서 볼 수 있듯이 CSRF 보호는 POST 데이터와 만 작동합니다 (양식 유효성 검사는 실제로 POST 데이터와 함께 작동 함).

CodeIgniter 방식을 사용하고 POST 요청을 사용해야합니다. AJAX를 사용하는 경우 GETPOST으로 변경하고 양식을 사용하는 경우 post으로 설정하십시오. 할 수 없다면 CodeIgniter 핵심 코드와 맞서야합니다. 이유를 설명하십시오. :)