CSRF 보안 차이점 문의 (HttpSessionCsrfTokenRepository() vs. CookieCsrfTokenRepository()
- 작성자 :
- 이*호
- 작성일 :
- 2021-07-27 15:10:45
- 조회수 :
- 3,829
- 구분 :
- 적용지원(기술지원)
- 진행상태 :
- 완료
Q
안녕하세요.
현재 IMDG (In-Memory Data Grid) 솔루션을 통해 Web Session Clustering을 구현하고 있습니다.
CSRF 보안을 위해 적용한 부분은 HttpSessionCsrfTokenRepository() 입니다.
IMDG 적용 후, 테스트를 위해 WAS 1번을 Down시키고 WAS2번으로 접속하면 메모리 Cache 서버 역할을 하는 IMDG에 세션 정보는 보관되어 있지만 WAS2번에서 신규로 세션을 생성합니다. 물론 IMDG 서버에 신규 세션 정보도 보관됩니다.
따라서, 로그인 한 사용자 정보가 Clear (NULL) 되는 현상이 있어서 CookieCsrfTokenRepository() 방식으로 변경 적용하니 WAS 1번이 다운된 후, WAS 2번으로 접속하면 신규 세션이 생성되지 않고 보관된 기존 세션을 잘 사용합니다. 즉, Web Session Clustering이 정상적으로 동작합니다.
문의 사항은 다음과 같습니다.
- HttpSession 및 Cookie 방식이 사용자 세션 정보를 관리하는 차이가 무엇입니까?
- HttpSession 방식으로 사용하면서 Cookie 방식을 혼용할 수 있습니까?
- Spring Security CSRF 에서 Cookie 방식을 사용하면 Session 방식보다 보안이 떨어집니까?
바쁘시겠지만 답변 부탁드립니다.
현재 IMDG (In-Memory Data Grid) 솔루션을 통해 Web Session Clustering을 구현하고 있습니다.
CSRF 보안을 위해 적용한 부분은 HttpSessionCsrfTokenRepository() 입니다.
IMDG 적용 후, 테스트를 위해 WAS 1번을 Down시키고 WAS2번으로 접속하면 메모리 Cache 서버 역할을 하는 IMDG에 세션 정보는 보관되어 있지만 WAS2번에서 신규로 세션을 생성합니다. 물론 IMDG 서버에 신규 세션 정보도 보관됩니다.
따라서, 로그인 한 사용자 정보가 Clear (NULL) 되는 현상이 있어서 CookieCsrfTokenRepository() 방식으로 변경 적용하니 WAS 1번이 다운된 후, WAS 2번으로 접속하면 신규 세션이 생성되지 않고 보관된 기존 세션을 잘 사용합니다. 즉, Web Session Clustering이 정상적으로 동작합니다.
문의 사항은 다음과 같습니다.
- HttpSession 및 Cookie 방식이 사용자 세션 정보를 관리하는 차이가 무엇입니까?
- HttpSession 방식으로 사용하면서 Cookie 방식을 혼용할 수 있습니까?
- Spring Security CSRF 에서 Cookie 방식을 사용하면 Session 방식보다 보안이 떨어집니까?
바쁘시겠지만 답변 부탁드립니다.
환경정보
-
- OS 정보 : RedHat 7.x
- 표준프레임워크 버전 : 3.8.0
- JDK(JRE) 정보 : 1.8.x
- WAS 정보 : JBoss 6.4.x
- DB 정보 :
- 기타 환경 정보 : IMDG (In-Memory Data Grid)
A
안녕하세요.
표준프레임워크센터입니다.
세션클러스터링시에 CSRF설정 관련하여 커스텀 하시는걸로
이해가 됩니다.
문의하신 부분과 관련하여 센터에서
가이드 해드리는 사항은 없습니다.
웹클라이언트에서 개발자콘솔을 오픈하시고
쿠키에 저장되는 클라이언트 정보를 확인하셔서
판단하셔야 할것으로 보입니다.
로컬에 값이 저장되는 쿠키보다는 세션이 나을것으로 보이나
사용하시는 개발환경 및 구성상황에 따라 다양한 결과가 있을수 있으므로
관련하여 전반적으로 확인하셔야 할것으로 보입니다.
감사합니다.
표준프레임워크센터입니다.
세션클러스터링시에 CSRF설정 관련하여 커스텀 하시는걸로
이해가 됩니다.
문의하신 부분과 관련하여 센터에서
가이드 해드리는 사항은 없습니다.
웹클라이언트에서 개발자콘솔을 오픈하시고
쿠키에 저장되는 클라이언트 정보를 확인하셔서
판단하셔야 할것으로 보입니다.
로컬에 값이 저장되는 쿠키보다는 세션이 나을것으로 보이나
사용하시는 개발환경 및 구성상황에 따라 다양한 결과가 있을수 있으므로
관련하여 전반적으로 확인하셔야 할것으로 보입니다.
감사합니다.