티스토리 뷰

Development/Network

[Network]세션(Session)

Vagabund.Gni 2022. 9. 20. 22:09
728x90
반응형

이전 글에서 HTTP의 특징인 비연결성과 무상태성 보완하기 위해 쿠키와 세션이 도입되었다고 했었다.

 

잠깐 복습하자면 HTTP는 위와 같은 특성을 가지기 때문에 서버는 클라이언트를 매번 확인해야 한다.

 

페이지를 이동할 때마다 로그인을 새로 해주어야 한다는 의미이다.

 

  • Connectionless - 클라이언트가 요청을 한 후 응답을 받으면 서버가 그 연결을 끊어 버리는 특성
  • Stateless - 연결을 끊는 순간 클라이언트와 서버의 통신이 끝나며, 상태 정보를 유지하지 않는 특성

 

2022.08.03 - [Development/Network] - [네트워크]웹(WEB)

2022.08.04 - [Development/Network] - [네트워크]HTTP

 

[네트워크]HTTP

HTTP(HyperText Transfer Protocol)는 하이퍼텍스트를 빠르게 교환하기 위한 프로토콜의 일종으로, 클라이언트와 서버가 어떻게 메시지를 교환할지를 정해 놓은 규칙이다. 프로토콜의 일종이라 함은

gnidinger.tistory.com

  쿠키 세션
저장 위치 클라이언트 로컬 서버 자원 사용
보안 취약(연결성 > 안정성) 우수(안정성 > 연결성)
속도 빠름 중간
수명 브라우저 종료시에도 남음 브라우저 종료와 함께 삭제
사용 예시 사이트 아이디/비밀번호 저장
쇼핑몰 장바구니
로그인 등 보안상 중요한 작업

지난 글의 쿠키에 이어 이번 글에선 세션에 대해 알아본다.

 

2022.09.20 - [Development/Network] - [Network]쿠키(Cookie)

 

[Network]쿠키(Cookie)

이전 글에서 HTTP의 특징인 비연결성과 무상태성을 보완하기 위해 쿠키와 세션이 도입되었다고 했었다. 잠깐 복습하자면 HTTP는 위와 같은 특성을 가지기 때문에 서버는 클라이언트를 매번 확인

gnidinger.tistory.com

 

Session

 

네트워크에서 세션이란 쿠키를 기반으로 한 기한이 정해진 양방향 연결, 혹은 그 기한을 가리킨다. 

 

여기서 기한이란 보통 브라우저의 작동 시간을 말하며, 쿠키와 달리 세션은 브라우저 종료 시 삭제된다.

 

안정성(보안)을 연결성보다 우선으로 하는 기술이라고 할 수 있는데,

 

클라이언트 측에 저장되는 쿠키와 달리 세션은 데이터를 서버에 저장한다는 차이점도 있다.

 

이 부분은 쿠키에 비해 세션의 보안을 우수하게 유지하는데 도움이 되는데,

 

반면 당연하게도 사용자가 많아질수록 서버 자원에 무리가 간다는 단점이 되기도 한다.

 

세션은 또한 OSI 7 계층 모델에서 5 계층인 Session Layer에 해당되며

 

클라이언트가 쿠키 반환 여부를 결정하듯이 서버가 자신의 자산을 사용하도록 허락하는 것이라 할 수도 있다.

 

구체적으론 클라이언트가 최초 요청을 보내면 서버는 각 세션을 구분하기 위해 세션 ID를 부여하며

 

이 인증 상태를 (특별한 옵션이 없다면) 브라우저가 종료될 때까지 유지한다.

 

더 세세한 동작 순서는 아래에서 알아보자.

 

HTTP With Sessions

 

세션을 기반으로 한 인증과 서버 이용은 위 그림과 같은 순서를 따른다.

 

  1. 정확한 아이디와 비밀번호를 입력한 사용자를 위해 세션 스토어에서 세션 및 세션 ID 생성 및 반환

    • 사용자가 정확한 정보를 입력해 인증에 성공한 상태세션이라고 부름
    • 서버는 인증에 성공한 사용자를 기억하기 위해 세션 스토어(일종의 DB)에 저장
    • 세션이 생성되면 세션을 구분할 수 있는 세션 ID 생성 및 클라이언트에게 전달
    • 클라이언트는 인증 성공을 증명할 수단으로 쿠키에 세션 ID를 저장
  2. 세션 ID를 요청 헤더에 담아 전송한 사용자를 위해 새로운 요청 처리 및 응답

    • 클라이언트는 세션이 유지되는 동안 요청 헤더에 세션 ID를 자동으로 추가
    • 서버는 세션 ID 체크 후 유효하다면 요청 처리 및 응답

이때 세션 ID가 담긴 쿠키는 클라이언트에 저장되기 때문에 보안이 취약해지는데,

 

이것이 공공 PC 등 외부 장소에서 반드시 로그아웃을 해야 하는 이유다.

 

로그아웃을 하면 세션이 종료되며 서버는 다음과 같은 작업을 하게 된다.

 

  • Set-Cookie를 이용해 클라이언트 측의 세션 ID를 무효한 값으로 갱신
  • 세션 정보 삭제
반응형

'Development > Network' 카테고리의 다른 글

[Network]OAuth 2.0  (0) 2022.09.28
[Network]JWT(JSON Web Token)  (0) 2022.09.23
[Network]세션 기반 인증 vs. 토큰 기반 인증  (0) 2022.09.23
[Network]쿠키(Cookie)  (1) 2022.09.20
[Network]해싱(Hashing)  (1) 2022.09.20
[Network]TLS, HTTPS  (1) 2022.09.20
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
글 보관함