제목 | csrf post 형식에 새로고침 | ||
---|---|---|---|
카테고리 | CI 2, 3 | ||
글쓴이 | 뫄뫄잉뿌 | 작성시각 | 2018/11/12 17:36:43 |
|
|||
$config['csrf_protection'] = TRUE; $config['csrf_regenerate'] = TRUE;
config에서 이렇게 설정해주고 <form method="post"> <input type="hidden" id="<?=$this->security->get_csrf_token_name() ?>" name="<?=$this->security->get_csrf_token_name() ?>" value="<?=$this->security->get_csrf_hash() ?>" /> </form> 으로 설정한 폼에서 데이터를 넣고 날짜를 바꾸는 페이지를 구현하였습니다. method 를 get 방식으로 할 때는 F5(새로고침)했을 때 문제 없는데, post 형식으로 바꾸면 The action you have requested is not allowed. 이렇게 에러가 납니다. 조회하는 페이지라 이 페이지를 $config['csrf_exclude_uris'] = array(); 이 값에 넣어서 예외처리를 해주면 되지만, 그러면 생성하는 페이지 (값을 받아서 DB에 넣는 처리를 하는 페이지)에서는 보안상 csrf를 처리하는 게 맞는 것 같은데 이런 생성하는 페이지들에서는 새로고침을 하게되면 에러가 나서 혼동이 옵니다.. 제 개인적으로도 새로고침을 자주하는 편이라 생성하는 페이지에서 값을 처음부터 다시 입력하게 될 경우 새로고침을 누르거나, 앞으로 이동, 뒤로 이동 같은 경우에는 무조건 에러 페이지가 나온다는 건데 제가 csrf 적용하는걸 잘못이해하고 있는건지.. csrf를 제대로 적용하려면 어떻게 해야하나요..? |
|||
다음글 | 초보 CI 질문드립니다. (2) | ||
이전글 | ci 영어 도큐먼트 저작권있는건가요? (2) | ||
변종원(웅파)
/
2018/11/12 17:46:20 /
추천
0
|
뫄뫄잉뿌
/
2018/11/12 17:51:20 /
추천
0
@변종원(웅파)님 답변 감사합니다! false로 해서 시도해보니 잘 작동하네요! 의문점은 매뉴얼에 보면 csrf_regenerate 설명 부분에 토큰 재생성을 기본으로 할 시 더 강력한 보안을 유지합니다. 그러나 유효하지 못한 토근값이 되버릴수 있습니다(뒤로가기, 앞으로이동, 여러 탭/윈도우 사용, 비동기화 작업, 등).. 다음 구성 매개변수를 변경하여 동작을 변경할 수 있습니다. 이렇게 적혀있는데 csrf_regenerate를 false로 하면 보안은 약해지지만 csrf에 대한 기본적인 보안은 가능하게 해준다는 의미인건가요? 늘 도움주셔서 정말 감사합니다. |
$config['csrf_regenerate'] = false; 로 해보세요
그리고 csrf는 post에서 악의적 전송을 막기위한 방법입니다. get방식에선 작동하지 않습니다.