코드스테이츠_국비교육/[Section4]

61.03_[인증/보안] 기초_쿠키, 세션_22.11.17

생각없이 해도 생각보다 좋다. 2022. 11. 17. 23:14

>Cookie

: 어떤 웹사이트에 들어갔을 때, 서버가 일방적으로 클라이언트에 전달하는 작은 데이터 (보통은 사용자에게 의사를 묻지 않음)

: 서버가 웹 브라우저에 정보를 저장하고 불러올 수 있는 수단.
>Cookie 목적

: HTTP의 특징인 Stateless를 보완하기 위한 도구

>Cookie 특징

: 삭제하지 않으면 정보가 사라지지 않음.

: 장기간 저장해야하는 옵션을 클라이언트에 저장하기 적합

: 장바구니 유지, 로그인 상태 유지 등

>Cookie 전달 방법

: 서버의 헤더에 `Set-Cookie`로 쿠키의 이름, 값, 경로 등을 전달함.

>Cookie Options

-Domain : 서버와 요청의 도메인이 일치하는 경우 쿠키 전송

-Path : 서버의 요청의 세부 경로가 일치하는 경우 쿠키 전송
-MaxAge or Expires : 쿠키의 유효기간 설정

-HttpOnly : 스크립트의 쿠키 접근 가능 여부 설정

-Secure : HTTPS 에서만 쿠키 전송 여부 설정

-SameSite : 같은 사이트에서만 쿠키를 사용할 수 있게 하는 설정

---Lax : origin이 다르면 get 요청에서만 쿠키 사용 가능
---Strict : origin 까진 신경안써, site만 같으면 쿠키 사용 가능
---None : origin, site 다 달라도 돼. 하지만 HTTPS 에서만 쿠키 사용가능

/*
site, origin 차이
origin : url이 똑같으면 same-origin
site : 도메인이 같으면 same-site
*/

 

>Cookie 의 한계

: 다양한 옵션으로 공격들에 대비할 방법은 있지만 결국 클라이언트에 정보를 저장하기 때문에 인증 상 한계가 존재한다.

: 이를 극복하기 위해 세션이라는 개념을 사용함.

 

>Session

: 세션은 사용자가 인증에 성공한 상태를 의미한다.

>Session이 이루어지는 과정

1. 로그인 요청

2. 비밀번호 해싱 및 DB 조회

3. 세션 id 생성 (세션 스토어)

4. 쿠키 설정 + 세션 id 전달

5. 브라우저(클라이언트)에 쿠키 저장

6. 클라이언트가 요청할 때 쿠키와 함께 세션 id를 전달

7. 세션 스토어에서 세션 id가 맞는지 확인

8. 세션 id가 맞다면 요청한 정보에 응답한다.