Session(세션)과 Cookie(쿠키)

Session

세션이란 웹 사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법을 말한다.

사용자가 브라우저를 닫아 서버와의 연결을 끝내는 시점까지를 세션이라고함.


Cookie

 

쿠키는 서버에서 받은 세션정보를 사용자가 저장한 것을 말하는데 이러한 저장과정을 거치는 이유는 매번 서버에 접근할 때마다 세션을 생성하는것은 서버에 많은 무리가 가고 느려지기 때문에 이러한 정보를 사용자가 가지게 함.


세션형성과 쿠키

 

  • 최초로 client가 웹에 접근시 server가 세션을 만들어서 client에게 보냄
  • 최초로 server에서 respond시 http headers에 세션ID 을 담아서 보냄.

 

 

  • 세션을 받은 client는 해당 세션을 쿠키에 저장함.

 

 

  • 이후 다시 같은 server에 접속시 쿠키를 server에서 보냄 
  • server는 쿠키에서 세션ID값을 받음.

 

 

  • 서버는 해당 session을 보고 client를 구분함. 
  • 하지만 같은 session을 가진 다른 client가 접근시 server가 구분하지 못하는 문제를  해결 하기위해 server에서는 별도의 session 정보 list를 가지고 있음.

Session이 사라지는 경우

 

  • Server를 삭제할 시 session들이 사라짐.
  • 사용자가 브라우저를 다 종료 했을 경우 session이 사라짐(Server에는 session이 살아 있음)
  • 특정시간 (보통은 30분)이 지나면 사라짐 

세션을 이용한 로그인 흐름

 

  1. 클라이언트가 서버에 접속 .
  2. 서버가 클라이언트의 세션을 목록에 저장.
  3. 세션정보를 클라이언트에게 전송 .
  4. 클라이언트는 세션정보를 받음.
  5. 해당 세션과 함께 로그인 요청.
  6. 서버는 DB에 클라이언트가 보낸 ID가 있는지 확인, 이후 서버세션 목록에 아이디도 같이 저장
  7. 있으면 클라이언트를 메인페이지 주소로 이동
  8. 클라이언트가 민감정보 요청
  9. 세션에 유저 아이디를 꺼내서 DB에 있는 지 확 후 데이터를 꺼냄
  10. 유저에게 정보를 전송 

 


여러개의 서버에서 Session 처리하는 방식

 

  • 클라이언트의 접속이 많은 서버는 동접자수가 많은 것을 대비하여 여러 개의 서버를 만들어서 관리함.
  • 이러한 서버관리는 로드 밸런싱이라고함. 
  • 여기서 하나의 서버에서 주는 session값을 가지고 있는 client가 다른 같은 웹사이트의 다른 server로 접근을 했을 시에 다른 session을 받게 되는 문제가 생기는데 이러한 문제를 해결하기 위해 Memory server가 따로 session을 저장하고 있다가 client가 접속시 session을 대조하여 사용자를 확인함. 

 

'Backend > Security' 카테고리의 다른 글

CIA, RSA, RFC  (1) 2022.12.29
OSI 7계층과 TCP(전송 제어 프로토콜)  (0) 2022.12.29
Spring Security (2)  (0) 2022.12.29
Spring Security (1)  (0) 2022.12.29
Spring Boot Security 기본설정  (0) 2022.12.29