CI 묻고 답하기

제목 CSRF true시 만드는 쿠키값에 대하여 질문이있습니다.
글쓴이 99CORN 작성시각 2016/03/02 08:32:01
댓글 : 1 추천 : 0 스크랩 : 0 조회수 : 13977   RSS

config.php 설정을 통해

$config['csrf_protection'] = TRUE;

값을 만들어주면 form 전송시 자동적으로 만들어지는 쿠키값을 같이 전송해야 하는것으로 알고있습니다.

 

ci에서 제공하는 form 헬퍼를 이용하면 따로 csrf쿠키를 삽입해주지 않아도 자동으로 같이 전송하는것으로 알고있는데,,

이 form 헬퍼를 이용하지 않고 csrf쿠키를 전달하게 될 때

 

한 페이지의 서로 다른 기능(form의 action이 다를 때(?))을 하는 여러 폼이 있는데

새로운 form마다 hidden값으로 csrf쿠키를 전달해야 하나요?

아니면 hidden값의 id를 주어 페이지당 하나만 선언해놓고,

form전송시 스크립트를 이용하여 참조하는 방법을 쓰나요?

 

지금은 전자의 방법처럼 한페이지의 폼마다 똑같은 csrf쿠키를 만들어서 전송하는데

뭔가 계속 같은 코드가 반복되는것 같아 이상(?)하다고 느껴져서 질문 남겨봅니다..

 다음글 encrypt 암호화 질문드리겠습니다. (7)
 이전글 웅파님....대체 무엇이 문제인지 모르겠습니다. (4)

댓글

/ 2016/03/02 09:31:14 / 추천 0

저는 <head>안쪽에 

var csrf = {'<?php echo $this->security->get_csrf_token_name(); ?>':'<?php echo $this->security->get_csrf_hash(); ?>'};
var csrf_name = '<?php echo $this->security->get_csrf_token_name(); ?>';
var csrf_hash = '<?php echo $this->security->get_csrf_hash(); ?>';

요런식으로 저장해 놓고, ajax는 

var data = new Array();
data.push({ name: csrf_name, value: csrf_hash });

요렇게 사용하고

hidden폼으로 넘기고 싶으면 

<input type="hidden" name="<?php echo $this->security->get_csrf_token_name(); ?>" value="<?php echo $this->security->get_csrf_hash(); ?>" />

이런식으로 사용합니다.