다잘하고싶어

[Spring] 로그인구현4_세션 사용하는 이유 본문

이론학습/SRPING

[Spring] 로그인구현4_세션 사용하는 이유

챙영잉 2022. 10. 7. 15:53

세션 동작 방식 이해하기

사용자가 아이디, 비밀번호를 넣으면 서버로 데이터가 넘어온다.

서버는 회원저장소에서 데이터와 일치하는 정보가 있는 지 확인한다.

(모두 일치한다면)

서버에 세션 저장소를 만들고, 추정불가능한 랜덤값을 (보통 자바에서 지원하는 uuid를 사용) 생성해서 토큰키로 사용한다.(=세션아이디)

값은 회원객체를 저장한다. 즉 세션아이디를 알면 회원객체를 꺼낼 수 있음. (아래 예시표 참고)

sessionId value
zz011e8e29zi memberA

이후 서버에서 쿠키를 만들어서 웹브라우저에 보내준다(상태유지를 위해서)

쿠키를 보낼 때, 세션아이디를 넘겨준다. 

웹브라우저에서는 쿠키저장소에 임의로 만든 랜덤값을 저장한다.

 

즉, 클라이언트와 서버는 결국 쿠키로 연결되어야 한다.

여기서 중요한 포인트? 회원과 관련된 정보는 클라이언트에 전달하지 않는다는 것!!

오직 추정 불가능한 세션 id만 쿠키를 통해 클라이언트에 전달한다. (사용자 추정불가)

 

이후 웹브라우저가 다른 페이지로 이동하면,

쿠키를 전달한다(mySessionId = zz...).

서버는 세션저장소를 확인해서 일치하는 정보가 있는 지 확인한다. 

 

 

세션을 사용할 시 해결할 수 있는 보안 문제

1. 쿠키값 변조 문제 -> 예상 불가능한 복잡한 세션 id 사용한다

2. 쿠키에 저장된 정보는 클라이언트 해킹 시 노출되는 문제 -> 세션id가 털려도 여기에는 중요한 정보가 없다.

3. 쿠키 탈취 후 사용 문제 -> 토큰을 훔쳐가도 사용할 수 없도록 세션의 만료시간을 짧게 설정한다.

 

 

이제 세션을 직접 구현해보자

2022.10.07 - [SRPING] - [Spring] 로그인구현5_세션 직접 구현하고 적용하기

 

 

 

 


출처 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-2/dashboard

 

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 인프런 | 강의

웹 애플리케이션 개발에 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. MVC 2편에서는 MVC 1편의 핵심 원리와 구조 위에 실무 웹 개발에 필요한 모든 활용 기술들을 학습할 수 있

www.inflearn.com

강의 듣고 내용 정리중