스프링 MVC 2 - 로그인 처리하기 - 세션 동작 방식
반응형
로그인 처리하기 - 세션 동작 방식
목표
앞서 쿠키에 중요한 정보를 보관하는 방법은 여러가지 보안 이슈가 있었다. 이 문제를 해결하려면 결국 중요한 정보를 모두 서버에 저장해야 한다. 그리고 클라이언트와 서버는 추정 불가능한 임의의 식별자 값으로 연결해야 한다.
이렇게 서버에 중요한 정보를 보관하고 연결을 유지하는 방법을 세션이라 한다.
세션 동작 방식
세션을 어떻게 개발할지 먼저 개념을 이해해보자.
로그인
- 사용자가 loginId, password 정보를 전달하면 서버에서 해당 사용자가 맞는지 확인한다.
세션 생성
- 세션 ID를 생성하는데, 추정 불가능해야 한다.
- UUID는 추정이 불가능하다.
- Cookie: mySessionId=zz0101xx-bab9-4b92-9b32-dadb280f4b61
- 생성된 세션 ID와 세션에 보관할 값(memberA)을 서버의 세션 저장소에 보관한다.
세션id를 응답 쿠키로 전달
클라이언트와 서버는 결국 쿠키로 연결이 되어야 한다.
- 서버는 클라이언트에 mySessionId라는 이름으로 세션ID만 쿠키에 담아서 전달한다.
- 클라이언트는 쿠키 저장소에 mySessionId 쿠키를 보관한다.
중요
- 여기서 중요한 포인트는 회원과 관련된 정보는 전혀 클라이언트에 전달하지 않는다는 것이다.
- 오직 추정 불가능한 세션 ID만 쿠키를 통해 클라이언트에 전달한다.
클라이언트의 세션id 쿠키 전달
- 클라이언트는 요청시 항상 mySessionId 쿠키를 전달한다.
- 서버에서는 클라이언트가 전달한 mySessionId 쿠키 정보로 세션 저장소를 조회해서 로그인시 보관한 세션 정보를 사용한다.
정리
세션을 사용해서 서버에서 중요한 정보를 관리하게 되었다. 덕분에 다음과 같은 보안 문제들을 해결할 수 있다.
- 쿠키 값을 변조 가능, → 예상 불가능한 복잡한 세션Id를 사용한다.
- 쿠키에 보관하는 정보는 클라이언트 해킹시 털릴 가능성이 있다. → 세션Id가 털려도 여기에는 중요한 정보가 없다.
- 쿠키 탈취 후 사용 → 해커가 토큰을 털어가도 시간이 지나면 사용할 수 없도록 서버에서 세션의 만료시간을 짧게(예: 30분) 유지한다.
또는 해킹이 의심되는 경우 서버에서 해당 세션을 강제로 제거하면 된다.
반응형
'Spring' 카테고리의 다른 글
스프링 MVC 2 - 로그인 처리하기 - 직접 만든 세션 적용 (0) | 2022.09.19 |
---|---|
스프링 MVC 2 - 로그인 처리하기 - 세션 직접 만들기 (0) | 2022.09.17 |
스프링 MVC 2 - 쿠키와 보안 문제 (0) | 2022.09.15 |
스프링 MVC 2 - 로그인 처리하기 - 쿠키 사용 (0) | 2022.09.11 |
스프링 MVC 2 - 로그인 기능 (0) | 2022.09.11 |
댓글
이 글 공유하기
다른 글
-
스프링 MVC 2 - 로그인 처리하기 - 직접 만든 세션 적용
스프링 MVC 2 - 로그인 처리하기 - 직접 만든 세션 적용
2022.09.19 -
스프링 MVC 2 - 로그인 처리하기 - 세션 직접 만들기
스프링 MVC 2 - 로그인 처리하기 - 세션 직접 만들기
2022.09.17 -
스프링 MVC 2 - 쿠키와 보안 문제
스프링 MVC 2 - 쿠키와 보안 문제
2022.09.15 -
스프링 MVC 2 - 로그인 처리하기 - 쿠키 사용
스프링 MVC 2 - 로그인 처리하기 - 쿠키 사용
2022.09.11