CI 묻고 답하기

제목 csrf_protection 옵션 질문입니다
카테고리 CI 2, 3
글쓴이 damian 작성시각 2017/06/13 09:04:23
댓글 : 1 추천 : 0 스크랩 : 0 조회수 : 19352   RSS

안녕하세요, 코드이그나이터 고수님들!

여기에 질문은 처음 올려보는 것 같네요!

반갑습니다^^

 

CSRF 기능을 사용중인데 한가지 불편사항이 있어서

질문남겨봅니다!

 

$config['csrf_protection'] = TRUE;

$config['csrf_expire'] = 7200;

$config['csrf_regenerate'] = TRUE;

 

이렇게 현재 사용중인데, 브라우저 뒤로가기를 실행하면

CSRF HASH 값이 재갱신되지 못해 403 에러가 뜨는것 같습니다.

 

1. 옵션중 regenerate를 FALSE 처리하면 해당 문제가 발생하진 않지만...

이왕이면 요청마다 재갱신시켜주는게 좀더 보안에 좋을 것 같아 TRUE 값을 쓰고싶은데ㅜㅜ

그러면 뒤로가기가 안먹고... 이런 경우 어떤 방식으로 처리하는게 좋을까요?

아니면 다른 보안책이 있을까요?

 

2. csrf_regenerate 값을 TRUE한것과 FALSE 한것의 차이가 큰가요?

 

두서없이 답답함을 써내려가느라 정리가 안된 글인데 읽어주셔서 감사하며,

작은 조언이라도 부탁드립니다^^

감사합니다.

 다음글 $_SESSION으로 세션 설정이 안되요 (4)
 이전글 sql 인젝션 질문 드립니다. (1)

댓글

변종원(웅파) / 2017/06/13 09:41:26 / 추천 0

매뉴얼에 나와있다시피 두마리 토끼를 다 잡을 수 없습니다. 

토근은 매 서브밋 때마다 재생성할 수 있습니다. 또는 하나의 CSRF 쿠기 값을 통해 계속 같은 값을 유지할 수 있습니다. 토큰 재생성을 기본으로 할 시 더 강력한 보안을 유지합니다. 그러나 유효하지 못한 토근값이 되버릴 수 있습니다(뒤로가기, 앞으로이동, 여러 탭/윈도우 사용, 비동기화 작업, 등).. 다음 구성 매개변수를 변경하여 동작을 변경할 수 있습니다

 

아래 글 참고해보세요. 에러를 노출하는게 아니라 화면을 갱신하도록 하고 있습니다.

보안수위를 조금 낮추면서 추가작업없이 사용할지, 보안수위를 유지하면서 추가작업(갱신시 데이터 보존)을 할지는

정책결정이 필요하겠네요.

http://www.johnkieken.com/how-to-handle-an-expired-csrf-token-after-a-page-is-left-open/