[Server] Session & Cookie

serinyoon·2021년 1월 20일
1

Backend

목록 보기
1/5
post-thumbnail

1. Session

1) 개념: 일정 시간 동안 같은 브라우저로 들어오는 요청을 하나의 상태로 보고, 그 상태를 유지하는 것

2) 특징

  • 서버가 값을 저장함
  • 장점: 쿠키에 비해 보안 우수
  • 단점: 서버에서 값을 저장하므로 서버 부하

3) 작동 방식

(1) Client → Server
클라이언트가 처음으로 서버에게 request 전송
(첫 request이므로 session id 존재하지 않음)

(2) Server → Client
서버가 session id가 없음을 확인하고 새로 발급하여 응답

(3) Client → Server
HTTP 헤더에 session id 포함시켜 응답

(4) Server
서버는 session id를 통해 사용자 식별

(5) 클라이언트 종료 시 session id 제거, 서버에서도 session 제거

4) 사용 예시
- 로그인

  • 개념: 클라이언트 로컬에 저장되는 key와 value가 담긴 데이터 파일

1) 구성 요소

  • 쿠키 이름(name)
  • 쿠키 값(value)
  • 쿠키 만료시간(expires)
  • 쿠키를 전송할 도메인 이름(domain)
  • 쿠키를 전송할 경로(path)
  • 보안 연결 여부(secure)
  • HttpOnly 여부(HttpOnly)

2) 특징
- 브라우저가 값을 저장
- 장점: 서버가 저장하는 것이 아니기 때문에 서버 부하가 덜함
- 단점: 세션에 비해 보안 취약

3) 작동 방식

(1) Client → Server
클라이언트가 서버에 처음으로 Request 전송

(2) Server
서버에서 쿠키 생성

(3) Server → Client
HTTP 헤더에 쿠키 포함시켜 응답

(4) Client
브라우저 종료되어도 쿠키 만료 기간 지나지 않았다면 클라이언트에서 보관

(5) Client → Server
같은 요청 하는 경우 HTTP 헤더에 쿠키 함께 보냄

(6) Server → Client
서버에서 쿠키를 읽어 이전 상태 정보를 변경할 필요 있을 때 쿠키 업데이트 하여 변경된 쿠키를 HTTP 헤더에 포함시켜 응답

4) 사용 예시
- 쇼핑몰 장바구니 기능
- "아이디와 비밀번호를 저장하시겠습니까?"
- "오늘 더 이상 이 창을 보지 않음"

3. Session과 Cookie의 장단점

다음에 이어 설명할 OAuth, JWT에 비해 구현이 간단하나, 보안에 상대적으로 취약함

profile
student developer · interested in backend & graphics

0개의 댓글