CSRF (Cross Site Request Forgery)
CI에서는 크로스 사이트 요청 위조에 대한 보호가 가능합니다.
CSRF 보호를 활성화하려면 application/config/config.php 를 열고 다음과 같이 설정합니다.

//$config['csrf_protection'] = false;
$config['csrf_protection'] = true;

 

활성화 한 후 view 페이지에서 form_helper 의 form_open() 함수를 사용하면, 폼의 CSRF 보호를위한 hidden 필드가 자동 삽입됩니다.
<?=form_open('form/update')?>
<input type="hidden" name="csrf_token_name" value="bdd350d889c5d8cf961a412107377844" />

 

 

csrf 보호를 활성화 시킨 상태에서 csrf_token_name ($config['csrf_token_name']) 을 함께 전송하지 않으면,
submit 버튼을 클릭할 경우 http 500 error code 를 발생시킵니다.

 

An Error Was Encountered
The action you have requested is not allowed.

 

 

 

Ajax 통신 역시 마찬가지 입니다.

var csrf = $('input[name=csrf_token_name]').val();

var test = $.ajax({
    type: "post",
    url: "form/ajax_auth",
    data : {csrf_token_name:csrf, ...

 

이런 식으로 csrf_token_name 을 함께 전달해야 500 에러를 피할 수 있습니다.

 


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret