쿠키와 세션에 대한 정리
🍪

쿠키와 세션에 대한 정리

Lecture
CS
태그
web
cs
cookie
public
완성
Y
생성일
Mar 18, 2024 01:37 AM
LectureName
Web

1. 쿠키


쿠키는 웹 어플리케이션이 사용자를 구분할 때 사용되는 HTTP 프로토콜의 중요한 요소입니다.
쿠키는 서버가 클라이언트에게 데이터를 보내거나, 클라이언트가 서버에게 데이터를 요청할 때 사용합니다. 쿠키를 사용하는 매커니즘은 다음과 같습니다.
 
 

1.1 쿠키 생성 및 사용

  1. 서버는 사용자에게 전달할 식별정보를 담아 Cookie를 생성한다.
  1. 서버는 Set-Cookie 헤더를 통해 클라이언트에게 전송한다.
  1. 쿠키를 받은 사용자는 서버로 보내는 요청에 쿠키 헤더를 더한다.
 
 

1.2 쿠키의 속성

쿠키 속성 명
설명
Expires
쿠키의 유효 기간을 나타낸다. Expires는 브라우저에게 유효 기간까지만 쿠키를 사용할 수 있게 한다. Expires 속성이 없다면 현재 세션에서만 이용 가능하다
domain
쿠키를 사용할 수 있는 도메인을 나타낸다.
path
쿠키가 사용할 수 있는 URL 경로를 나타낸다
secure
이 속성이 설정되면 쿠키는 HTTPS 요청으로만 전송한다.
HttpOnly
이 속성이 설정되면 쿠키는 클라이언트 쪽의 자바 스크립트로 직접 접근할 수 없다. ( 우회법이 없진 않다 )
SameSite
쿠키가 cross-site 요청과 함께 전송되지 않음을 요구한다.
 
💡
쿠키의 속성은 어디서 볼 수 있나요?
F12->Application->cookie 에서 볼 수 있습니다.
notion image
 
 
쿠키를 받아오는 예시
쿠키를 사용할 일이 있으면, 웹 서버는(웹 어플리케이션) 사용자에게 Set-Cookie 헤더를 이용하여 쿠키를 반환합니다.
HTTP/1.1 302 Vary: Origin Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Set-Cookie: JSESSIONI*****************8E256F13; Path=/; HttpOnly Location: http://www.soti.or.kr/api/member/login/success Content-Length: 0 Date: Mon, 11 Sep 2023 13:50:21 GMT Connection: close
  • 브라우저가 서버에게 접근하여 인증에 성공하고 쿠키를 받은 모습입니다.
  • 현재 쿠키는 JESSION~ 형태이며 PATH는 전부, HttpOnly가 걸려있습니다.
 
 
 
 

2. 쿠키의 사용


2.1 쿠키가 사용되는 곳

  • 기술적 쿠키 : 검색하는 사람이 사람인지, 어플리케이션인지 수행
  • 분석 쿠키 : 쿠키를 통해 어떤 종류를 검색하는지, 시간, 언어 등을 수집한다.
  • 광고 쿠키 : 검색 내용 및 언어 등을 따라서 광고를 개재한다.
 
 

2.2 자주 사용되는 쿠키

이름
사용처
설명
JSESSIONID
톰캣 컨테이너
톰캣 컨테이너에서 세션을 유지하기 위해 발급
PHPSESSIONID
PHP
PHP 웹사이트에서 세션을 유지하기 위해 발급
_ga, _gid, _gat
구글 애널리틱스
구글 애널리틱스 추적 코드에 사용
 
 
 

3. 세션


웹서버에 저장되는 Session은 하나의 유저(브라우저)가 웹서버에 접근한 시점부터 부여되고 유지되며, 유저의 상태 정보 등을 저장합니다.
 

3.1 세션이 어떻게 유지되는가

웹 서버에서 유니크한 값 ex) email으로 세션을 생성하게 되면 웹 서버는 해당 세션을 쿠키 형태로 유저(웹 브라우저)한테 전달하게 됩니다. 유저는 해당 쿠키를 브라우저에 저장한 상태로 활동을 하며 요청 정보마다 웹 서버에게 자신의 상태를 전달한다.
 
 

3.2 세션을 관리하는 방법

웹 어플리케이션별로 세션을 구현하는 법은 각기 다르다. 하지만 거의 공통적으로 확인할 수 있는 것은 웹서버가 세션을 생성하고 그 안에 속성 값을 넣어 사용자 세션을 컨트롤 한다
 
예시 1: PHP
session_start(); $_SESSION['userEmail'] = 'user1'; $_SESSION['userName'] = 'jalnik';