ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Session이란 무엇인가
    기타 2024. 4. 2. 14:37

    세션이란?

     - 클라이언트로 부터 오는 일련의 요청을 하나의 상태로 보고 그 상태를 일정하게 유지하는 기술

     - 클라이언트가 웹 서버에 접속해있는 상태가 하나의 단위

     

    세션은 웹서버에 웹 컨테이너의 상태를 유지하기 위한 정보를 저장합니다.

    브라우저를 닫거나 서버에서 세션을 삭제하면 세션이 삭제됩니다.

    세션은 각 클라이언트의 고유세션 ID를 부여하는데, 이것을 클라이언트를 구분하여 각 클라이언트의 요구에 맞는 응답을 반환합니다.

     

    세션 특징

    웹 서버에 웹 컨테이너의 상태를 유지하기 위한 정보 저장

    웹 서버에 저장되는 쿠키 (=세션쿠키)

    브라우저를 닫거나, 서버에서 세션을 삭제했을 때 삭제되므로, 쿠키보다 보안이 좋다.

    저장 데이터에 제한이 없다.

    각 클라이언트의 고유 세션ID를 부여한다.

    세션ID로 클라이언트를 구분하여 각 클라이언트 요구에 맞는 서비스를 제공한다.

     

    세션 동작순서

    1. 클라이언트 요청

    2. Request-Header 필드의 Cookie에서 세션ID를 보냈는지 확인

    3. 세션ID가 없을 경우, 서버에서 생성하여 클라이언트에게 전송

    4. 쿠키를 이용해 세션ID를 서버에 저장

    5. 클라이언트 재접속 시, 쿠키를 이용하여 세션ID 값을 서버에 전달 

     

    사용 Example

    화면을 이동해도 로그인이 풀리지 않고 로그아웃전까지 유지.

    세션을 체크하여 관리자/사용자 여부 판단 등등 ..

     

    쿠키와 세션 차이

    구분 쿠키 세션
    저장위치 클라이언트 서버
    라이프사이클 쿠키 저장시 설정 브라우저 종료 시 삭제
    보안 비교적 취약 안전
    속도 빠름 비교적 느림

     

    쿠키는 브라우저 종료 시 삭제되는 세션과 달리 쿠키 저장시 만료시점을 저장하여 브라우저가 종료되더라도 자동 삭제되지 않습니다.

    즉, 만료시점이 지나야 쿠키가 삭제되는 것 입니다.

    세션은 서버에 저장되므로 안전한 반면, 쿠키는 로컬에 저장되어 탈튀, 변조 위험이 존해합니다.

    이러한 세션은 보안에 취약한 쿠키를 보완해주는 역할을 하고 있습니다.

     

    하지만 세션은 제공받은 세션ID를 이용해서 서버에서 다시 데이터를 참조해야 하므로 쿠키에 비해 느립니다.

     

    쿠키와 세션 사용하는 이유

    HTTP 프로토콜의 특징이자 약점을 보완하기 위해서 사용

     

    1. Connectionless. Protocol 비연결지향

    클라이언트가 서버에 요청했을때, 그 요청에 맞는 응답을 보낸 후 연결을 끊는 처리방식.

     

    2. Stateless Protocol (상태정보 유지안함)

    클라이언트의 상태정보를 가지지않는 서버처리방식.

    클라이언트와 첫번째 통신에서 데이터를 주고받았다 해도, 두번째 통신에서 이전데이터를 유지하지 않는다.

     

    실제로 데이터유지가 필요한 경우가 많은데,

    정보가 유지되지 않으면 매번 페이지 이동시 마다 로그인을 해야하거나 장바구니에서 상품을 선택했는데 구매페이지에서 상품의 정보가 사라지거나 하는 경우가 발행할 것이다.

    이 때문에 Stateful 경우를 대처하기 위해서 쿠키와 세션을 사용한다.

     

    서버와 클라이언트 통신 시 통신이 연속적으로 이어지지 않고 한번 통신 후 끊어지게 된다.

    따라서 서버는 클라이언트가 누구인지 계속 인증해야하는데 이는 매우 귀찮고 번거로운 일이기도 하고 웹페이지의 로딩을 느리게한다.

    이러한 문제점을 해결하는 방법이 쿠키와 세션이다.

     

    즉, 클라이언트 서버 통신시 정보를 유지하기 위해 사용하는 것이 쿠키와 세션이다.

    '기타' 카테고리의 다른 글

    쿠키란 무엇인가?  (0) 2024.04.02
    HTTPS란?  (0) 2024.04.02
    HTTP란 무엇인가?  (0) 2024.04.02
    REST란 RESTful란  (0) 2024.03.25
    [mac] SQL Developer 실행안됨  (0) 2021.04.13
Designed by Tistory.