HTTP : Cookie / Session / Token

TopOfTheHead·2025년 8월 10일

컴퓨터네트워크

목록 보기
10/21

HTTP 프로토콜의 Stateless를 보완하기 위해 사용하는 방법 :
HTTPStateless Protocol이므로, Server와 Client 간 HTTP TransactionTCP Connection을 종료하면 상태정보를 유지하지 않는다.
▶ 통신이 끊어지면 상태정보가 유지되지 않으므로, 이를 보완하기위해 HTTPCookie , Session , Token를 사용

쿠키 ( cookie ) :
Stateless Protocol을 보완하고자 HTTP Server에서 특정 HTTP ClientHTTP TransactionHistory를 조회할 수 있는 수단으로 활용

。사용자가 어떤 웹사이트를 방문 시 HTTP Server에서 할당되는 식별번호를 저장하는 브라우저의 저장소 파일
HTTP Server가 아닌, 브라우저쿠키를 저장.
▶ 。만료기간이 존재하는 4kb 용량제한이 존재하는 key-value 저장소.

HTTPStateless하여 HTTP Request는 요청한 사용자 정보에 대한 State를 포함하지 않으므로, 브라우저식별번호를 포함한 CookieHTTP Request헤더에 포함하여 HTTP Server로 전송함으로써 HTTP Server 측에서 사용자의 신원을 파악
HTTP Server는 각각의 브라우저에 할당한 식별번호서버 백엔드 DB를 통해 인덱싱함으로써 특정 브라우저History을 조회

Cookie File식별번호를 할당 후 장시간이 지난 이후에도 브라우저에서 식별번호를 포함하여 HTTP Request 하는 경우 HTTP Server백엔드 DB에서 삭제하지 않는 한 여전히 브라우저에 대한 정보를 유지할 수 있다.

  • Cookie의 주요용도
    • User Session State
      。사용자의 HTTP Session을 유지
      Server에 로그인 시 HTTP RequestCookie Header Line를 포함하여 전송하면 사용자 세션 시간동안 브라우저HTTP Server가 식별하면서 로그인 유지

    • 장바구니
      브라우저에 할당한 식별번호서버 백엔드 DB를 통해 인덱싱함으로써 브라우저에게 장바구니 등의 기능을 제공

    • Recommendation
      식별번호에 해당하는 브라우저의 구매정보를 조회함으로써 상품 추천이 가능


  • Cookie 주요요소
    • HTTP Response MessageHTTP HeaderCookie Header Line
      Set-cookie : 쿠키식별번호

    • HTTP Request MessageHTTP HeaderCookie Header Line
      cookie : 쿠키식별번호

    • HTTP Client브라우저에서 보관되는Cookie File
      Client HostState를 유지
      HTTP Server에서 전송한 식별번호Server Host Name과 함께 저장

    • HTTP Server백엔드 DB
      식별번호브라우저History를 인덱싱


  • Cookie 원리
    브라우저에서 초기 HTTP Server 접속 시 HTTP Server에서 해당 브라우저에 대한 식별번호를 할당 후 브라우저Cookie File에 해당 식별번호를 포함
    ▶ 이후 HTTP RequestCookie Header Line을 포함하여 HTTP Server에 전송 시 서버 백엔드 DB를 통해 식별번호인덱싱하여 해당 브라우저의 접속기록을 조회
    • 사용자가 Client웹브라우저를 통해 웹페이지를 요청하기위해 우선 Amazon 웹서버HTTP Request Message 전송
      。이때. 해당 웹브라우저로는 Amazon 웹서버에 처음 방문하고, Ebay 웹서버는 이미 방문한적이 있다고 가정

    • Amazon 웹서버에서 HTTP Request를 수신 시 송신한 브라우저에 대한 유일한 식별번호를 생성 및 백엔드 DBEntry 생성
      。해당 식별번호를 통해 차후 백엔드 DB에서 인덱싱을 수행

    • Amazon 웹서버에서 해당 식별번호HTTP Response MessageHTTP Header로서 Set-cookie : 식별번호를 포함하여 해당하는 브라우저로 응답
      ex ) Set-cookie : 1678

    • HTTP Response Message 수신 시 브라우저Cookie FileServer Host nameSet-cookie : 식별번호를 추가
      。이를 통해 현재 브라우저Amazon 웹서버Ebay 웹서버Entry를 보유한 상태

    • 브라우저에서 해당 웹페이지를 요청하고자 HTTP Request Message헤더Cookie : 식별번호를 포함 후 Amazon 웹서버로 요청
      브라우저Cookie File을 참조하여 Server에 대한 식별번호를 발췌 후 HTTP Request Message식별번호를 포함하는 Cookie를 포함

    • Amazon 웹서버에서 해당 식별번호백엔드 DB에서 인덱싱함으로써 해당 브라우저의 할도을 추적가능
      Amazon의 경우 해당 식별번호에 해당하는 브라우저웹페이지 방문기록을 조회할 수 있고, 회원가입을 하지 않더라도 장바구니 등의 서비스를 제공가능


  • Cookie 종류
    • Session Cookie
      。만료시간(Expire data)를 설정 및 메모리에만 저장.
      。Browser 종료 시 Cookie를 삭제.

    • Persistent Cookie
      。장기간 유지되는 Cookie.
      。파일로 저장되어 Browser 종료와 관계없이 영속적으로 존재

    • Secure Cookie
      HTTPS에서만 사용.
      。cookie 정보가 암호화되어 전송.

    • Third-Party Cookie
      。방문 domain 및 다른 domain의 cookie( ex. 광고 배너 )등을 관리 시 유입경로를 추적하기위해 사용.

세션 ( Http session )
브라우저Server 간의 송수신 연결상태를 유지할 수 있는 방법을 정의

ex) 웹서버에 로그인 시, 새로고침하거나 브라우저를 닫았다 열어도 일정 기간은 로그인 유지되어있는데, 이처럼 연결상태 유지할수잇게 하는것이 Session

HTTP세션을 구현하므로 로그인 인증을 유지하지만 FTP의 경우 세션을 구현하지 않으므로 매 요청마다 인증을 수행해야한다.

Cookie와 다르게, HTTP Client가 아닌 HTTP Server 측에서 저장하여 관리하는 정보.
HTTP Session id를 식별자로 구별하여 접속한 Server의 백엔드 DB에 정보를 저장.

  • Http Session 절차 출처

    HTTP ClientHTTP Server에 Resource를 요청.

    HTTP Server에서는 Http Request에 포함된 Cookie에서 Session id를 확인 후 없을 경우, 새로 발행한 Session-idHTTP Response MessageCookie Header LineSet-Cookie 에 포함하여 응답

    ClientHttp Request MessageCookie Header LineCookieSession id를 포함하여 원하는 Resource를 요청

    Server세션저장소에서 HTTP Request에 포함된 Session id를 통해 해당 Session을 찾은 후 상태정보를 유지하며 request에 대한 response를 전송.

토큰 ( token )
Client-side에서 인증정보를 보관하는 방법.
▶ Server가 아닌, 인증정보를 client-side에 암호화하여 저장.

Session기반 인증방식은 Client에서 Server에 특정 User에 대한 정보를 요청할때마다 일일이 Session id의 일치여부를 확인.
▶ 매 요청마다 Server의 DB를 일일이 확인하는것이 부담이되므로 Token 기반 인증방식이 등장하여 단순히 인즌 헤더에 포함된 토큰에 대해 해당 서버로부터의 발급여부와 유효여부에 대해서만 검증만 수행

  • JSON 토큰 ( JWT : Json Web Token ) :
    Web에서 Authentication과 정보교환 등을 수행하기위해 사용하는 Token 기반 인증 방식.
    。로그인 후 Server가 Client에게 발급하는 Token으로 활용
    ▶이후 Client에서 전송하는 HTTP Request마다 JWT를 포함하여 인증을 수행.

    。Client가 Token을 보관하면서 Stateless 특징을 지니므로, Session이 필요없다.
    ▶ 또한 Session처럼 DB 조회없이 token만으로 Authenticate가 가능.

    JWTpayload에 사용자 정보를 보관 가능.
profile
공부기록 블로그

0개의 댓글