제목 | CSRF 사용시 AJAX 사용 이게 맞나요? | ||
---|---|---|---|
글쓴이 | 천 | 작성시각 | 2013/06/13 19:47:40 |
|
|||
요즘 보안 문제로 다시 소스를 수정하였는데요. config.php 에서 XSS랑 CSRF를 TRUE로 설정했더니 AJAX가 안되더라구요. $config['global_xss_filtering'] = TRUE;
$config['csrf_protection'] = TRUE;
그래서 이곳저곳 찾아서 수정하긴 했는데 맞는지 좀 봐주세요. config.php $config['csrf_protection'] = TRUE;
$config['csrf_token_name'] = 'ci_t';
view단 <input type="hidden" id="<?= $this->security->get_csrf_token_name() ?>" name="<?= $this->security->get_csrf_token_name() ?>" value="<?= $this->security->get_csrf_hash() ?>" />
JS단 user_id : $("#asdasd").val(),
ci_t : $("#ci_t").val(),
대충 이렇게 하니까 되긴 하던데요. 보통 이렇게 하는게 정상적인가요? 제가 워낙 근본 없이 C & P 해서 개념이 잘안서네요. 고수님들 도와주세요. |
|||
다음글 | config의 database설정을 불러오는 부분을 보... (5) | ||
이전글 | Disallowed Key Characters. 에러 ... (2) | ||
키
/
2013/06/13 20:46:30 /
추천
0
|
천
/
2013/06/13 21:21:50 /
추천
0
감사합니다 ^^
|
다만 개념이 조금 정리가 안된다고 하시는데
정리를 좀 해드리자면 csrf 옵션사용시
form 전송시 csrf 값을 같이 반드시 같이 전송해줘야 합니다.
같이 전송되어져야 하는 변수 명은 $config['csrf_token_name']에 지정해주신 값으로 하셔야 하며
전송되어져야 하는 값은 $this->security->get_csrf_hash() 으로 불러오시는게 맞습니다.
js에 지정해주신 것을 보면
user_id 의 경우 본인이 필요한 값이 되는 것이고
ci_t의 경우 csrf에서 거부당하지 않기 위해 같이 전송해줘야 되는 변수명(지정한 것)이며
$("#ci_t").val(),의 경우 불러온 $this->security->get_csrf_hash() 의 값이 되는 것입니다.