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
- 손가락귀신
정신 못차리면, 벌 받는다.
,