
세션이란?
쿠키에는 보안 문제 가 존재했다. 중요한 정보(ex. 회원id)를 쿠키에 보관해서 해커에게 털릴 위험이 있다.
중요한 정보는 서버에 저장해야한다.
서버에 중요한 정보를 보관하고 연결을 유지하는 방법을 세션이라고 한다.
세션 동작 방식

1. 사용자가 로그인을 요청하면 아이디와 비번을 가지고 있는 사용자를 조회
2. 사용자가 존재한다면 세션 저장소에 세션 아이디와 해당 사용자 정보를 저장
3. 세션 ID를 생성하는데, 추정 불가능해야함
4. 서버는 클라이언트에 sessionId 라는 이름(변경 가능)으로 세션ID 만 쿠키에 담아서 전달
5. 클라이언트는 쿠키 저장소에 sessionId 쿠키를 보관한다.

1. 클라이언트는 서버에 요청을 보낼때 쿠키저장소에 있는 sessionId를 같이 전송
2. 서버에서는 해당 요청을 수행전에 해당 sessionId를 세션 저장소에서 조회
3. 존재하면 클라이언트가 요청한 처리 진행
세션 보안 문제 해결
전에 공부한 쿠키와는 다르게 회원과 관련된 정보는 전혀 클라이언트에 전달하지 않는다.
오직 추정 불가능한 세션 ID만 쿠키를 통해 클라이언트에 전달한다.
문제1. 쿠키 값을 변조 가능
해결1. 예상 불가능한 복잡한 세션Id를 사용해 변조를 해도 소용이 없음
문제2. 쿠키에 보관하는 정보는 클라이언트 해킹시 털릴 가능성 존재
해결2. 세션Id가 털려도 여기에는 중요한 정보가 없음
문제3. 쿠키 탈취 후 지속적으로 사용 가능
해결3. 해커가 토큰을 털어가도 시간이지나면 사용할 수 없도록 서버에서 세션의 만료시간을 짧게(예: 30분) 유지
또는 해킹이 의심되는 경우 서버에서 해당 세션을 강제로 제거
'Spring > Login' 카테고리의 다른 글
| 세션(Session) - 타임아웃 설정 (0) | 2023.05.29 |
|---|---|
| 세션(Session) - @SessionAttribute 사용 (0) | 2023.05.16 |
| 세션(Session) - 서블릿이 제공하는 세션 사용 (0) | 2023.05.16 |
| 세션(Session) - 세션 직접 구현하기 (0) | 2023.05.15 |
| 쿠키(Cookie) - 로그인 상태 유지하기 (0) | 2023.05.02 |