Server

[Web] 쿠키와 세션

효진인데요 2023. 9. 4. 13:22

 

 

 

0. 쿠키(Cookie)란?

 

 

출처:https://beomy.github.io/tech/browser/cookie/

 

 

 

  • 웹 서비스를 사용할 때 클라이언트가 정보를 유지하는 성격의 서비스가 많아짐
    (ex. 로그인을 통해 볼 수 있는 서비스, 장바구니 등등)

  • 웹 서버가 브라우저에게 지시한 뒤 사용자의 로컬 컴퓨터에 파일 또는 메모리에 저장하는 작은 기록 정보 파일

  • 필요시 정보를 참조하거나 재사용 가능

  • 파일에 담겨있는 정보는 인터넷 사용자가 같은 웹 사이트를 방문할 때마다 읽힘

  • 새로운 정보로 업데이트 가능

 

 

[ 특징 ]

  • 이름, 값, 만료일(저장 기간 설정), 경로 정보로 구성

  • 클라이언트에 총 300개의 쿠키 저장 가능

  • 하나의 도메인 당 20개의 쿠키를 가질 수 있음

  • 하나의 쿠키는 4KB(4096byte)까지 저장 가능

 

 

 

 

1. 쿠키 - 구성요소

 

출처:[SeSAC_YDP_5] 18_Session,Cookie

 

 

구성 요소 설명
Name 쿠키의 이름
Value 쿠키에 저장된 값
Expires - 쿠키가 언제 삭제되는지 결정
- ex) expires = "Wdy, DD−Mon−YYYY HH:MM:SS GMT"
- 쿠키에 만료일이 포함되어 있으면 영구적 쿠키
- Max-Age 속성을 통해 지정된 만료일이 되면 쿠키가 제거
Domain - 쿠키가 사용되는 도메인을 지정
- ex) domain = @@@@.github.io
- 해당 값이 현재 도메인과 일치하지 않으면 "타사 쿠키"로 간주되며, 현재 브라우저에서 거부
Path - 쿠키를 반환할 경로를 결정
- ex) path = /
- 도메인의 루트 경로로 이동할 때 쿠키가 전송
Secure 보안 연결 설정
HttpOnly Http 외에 다른 통신 사용 가능 설정

 

 

 

 

 

 2. 쿠키 - 종류

 

종류 특징
Session Cookie - 대부분 만료 시간 (expire data)를 설정
- 메모리에만 저장
- 브라우저 종료 시 쿠키를 삭제
Persistent Cookie - 장기간 유지되는 쿠키
- 파일로 저장
- 브라우저 종료와 관계없이 사용
Secure Cookie - Https에서만 사용
- 쿠키 정보가 암호화 되어 전송
Third-Party Cookie - 방문한 도메인과 다른 도메인으이 쿠키
- 광고 베너등을 관리할 때 유입 경로를 추적하기 위해 사용

 

 

 

 

3. 쿠키 - 동작 순서

 

출처:https://interconnection.tistory.com/74

 

 

  1. 클라이언트가 페이지를 요청 ( 사용자가 웹사이트에 접근 )

  2. 웹 서버는 쿠키를 생성

  3. 생성한 쿠키에 정보를 담아 HTTP 화면을 제공할 때, 함께 클라이언트에게 제공

  4. 받은 쿠키는 클라이언트가 로컬 PC에 저장하고 있다가, 다시 서버에 요청할 때 해당 요청과 함께 쿠키를 전송

  5. 동일 사이트에 재방문 시 클라이언트의 PC에 해당 쿠키가 존재하는 경우, 요청 페이지와 함께 쿠키를 전송

 

 

 


 

 

 

 

4. 세션(HTTP Session)이란?

 

 

  • 쿠키의 트래픽 문제와 쿠키를 변경하는 보안적인 이슈를 해결하기 위해 등장

  • HTTP Session id를 식별자로 구별

  • 데이터를 사용자의 브라우저에 쿠키 형태가 아닌 접속한 서버 DB에 정보를 저장

  • 클라이언트는 HTTP Session id를 쿠키로 메모리에 저장된 형태로 가지고 있음

  • 메모리에 저장하기 때문에 브라우저 종료 시 사라짐

 

 

 

[ 특징 ]

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

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

  • 브라우저를 종료하거나, 서버에서 세션을 삭제할 때만 삭제가 되기에 쿠키보다 비교적 보안 측면에서 우수

  • 저장 데이터에 제한 X

  • 각 클라이언트 고유 Session ID 부여하여 이로 클라이언트를 구분하고 각 클라이언트의 요구에 맞는 서비스 제공

 

 

 

 

 

 

5. 세션 - 동작 순서

 

 

출처:https://thecodinglog.github.io/web/2020/08/11/what-is-session.html

 

 

  1. 클라이언트가 페이지를 요청 ( 사용자가 웹 사이트 접근 )

  2. 서버는 접근한 클라이언트의 Request-Header 필드인 Cookie를 확인
    -> 클라이언트가 해당 session-id를 보냈는지 확인

  3. session-id가 존재하지 않을 시, 서버는 session-id를 생성하여 클라이언트에게 제공

  4. 서버에서 클라이언트로 돌려준 session-id를 쿠키를 사용하여 서버에 저장

  5. 클라이언트는 재접속 시, 해당 쿠키를 사용하여 session-id 값을 서버에 전달

 

 

 

 


 

 

6. 쿠키와 세션 차이

 

  쿠키 (Cookie) 세션 (Session)
저장 위치 클라이언트 ( 사용자 PC ) 웹 서버
저장 형식 text object
만료 시점 쿠키 저장 시 설정
(브라우저가 종료되어도
만료 시점이 지나지 않으면 삭제 X)
브라우저 종료시 삭제
(기간 지정 가능)
사용하는 자원 (리소스) 클라이언트 리소스 웹 서버 리소스
용량 제한 - 총 300개
- 하나의 도메인 당 20개
- 하나의 쿠키 당 4KB
서버가 허용하는 한 제한 X
속도 세션보다 빠름 쿠키보다 느림
보안 세션보다 미흡 쿠키보다 좋음

 

 

 

 

 

 

 

 

728x90

'Server' 카테고리의 다른 글

압축(ZIP) 폴더 오류 / 해결방법  (3) 2023.12.04
[Server]프로젝트 배포 진행  (0) 2023.09.11
[HTTP] get post 개념과 차이점  (0) 2023.08.18
[서버] IP와 URL  (0) 2023.08.08
[서버] 서버/구축방법/클라우드서버  (0) 2023.08.07