>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가 맞다면 요청한 정보에 응답한다.
'코드스테이츠_국비교육 > [Section4]' 카테고리의 다른 글
62.02_[Spring Security] 로그인 인증_InMemory_22.11.18 (0) | 2022.11.21 |
---|---|
62.01_[Spring Security] Spring Security 개요_22.11.18 (0) | 2022.11.21 |
61.04_[인증/보안] 기초_웹 보안 공격_22.11.17 (0) | 2022.11.17 |
61.02_[인증/보안] 기초_해싱_22.11.17 (0) | 2022.11.17 |
61.01_[인증/보안] 기초_HTTPS_22.11.17 (0) | 2022.11.17 |