쿠키
Set-Cookie
서버에서 클라이언트 쿠키 전달(응답)
ex) set-cookie: sessionId=asdasd124; expires=날짜; path=/; domain=.google.com;Secure
로그인 과정
1. 클라이언트 From을 통해 로그인
POST /login HTTP/1.1
Host: ...
user=jongin
2. 서버, DB에서 유저 확인후 응답
HTTP/1.1 200 OK
Set-Cookie: user=jongin
jongin님 안녕하세요~!
Set-Cookie에 user의 정보를 함께 보냄
3. 웹브라우저 쿠키 저장
웹브라우저에는 쿠키를 저장할 수 있는 공간이 있어서, 그 곳에 쿠키 저장
4. 또 다른 요청
GET /welcome HTTP/1.1
Cookie: user=jongin
쿠키가 웹 브라우저에 저장된 이후에는 요청을 보낼 때 마다, cookie 값을 넣어서 요청을 보냄
Cookie
클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP요청시 서버로 전달
활용
- 사용자 로그인 세션 관리
- 광고 정보 트래킹
쿠키 정보는 항상 서버에 전송됨
- 웹브라우저에 쿠키가 존재하면 서버에 요청할 때마다, 쿠키도 같이 보냄 -> 추가 트래픽 발생
- 최소한의 정보만을 사용 (세션 id, 인증 토큰)
- 서버에 전송하지 않고, 웹 브라우저 내부에 데이터를 저장하고 싶으면 웹 스토리지(localStorage, sessionStorage)참고
Cookie에는 보안에 민감한 정보를 저장하면 안됨
쿠키 - 생명주기
set-Cookie: expires = 날짜 (GMT)
- 만료일 되면 쿠키 삭제
set-Cookie: max-age=3600 (초)
- 3600초가 지나면 쿠키 삭제 ( 0이나 음수이면 쿠키 삭제)
세션 쿠키
만료 날짜를 생략하면, 브라우저 종료시 까지만 유지
영속 쿠키
만료 날짜를 입력하면 해당 날짜까지 유지
쿠키 - 도메인
domain=google.com
domain을 명시한 경우
- 명시한 domain은 물론이고, 서브 도메인에서도 쿠키 접근 가능
domain을 명시안한 경우
- 현재 문서 기준에서만 쿠키 접근가능
쿠키 - 경로
path=/home
이 경로를 포함한 하위 경로 페이지만 쿠키 접근
일반적으로 "path=/"로 지정 ( 해당 도메인에서는 모든 곳에서 쿠키를 사용하게 하고 싶으니까)
쿠키 - 보안
Secure
Secure 생략시
쿠키 http, https를 구분하지 않고 전송
Secure 명시시
https인 경우에만 전송
HttpOnly
- XSS 공격방지
- 자바스크립트에서 접근 불가
- HTTP전송에서만 사용
SameSite
- XSRF공격 방지
- 요청 도메인과 쿠키에 설정된 도메인이 같은 경우에만 쿠키 전송
'IT 공부 > Network' 카테고리의 다른 글
Apache와 PHP설정을 통해, gateway timeout 문제 해결하기 (0) | 2022.12.10 |
---|---|
[ 캐시 ] 조건부 요청 / 검증헤더 / Cache-Control / ETag (0) | 2021.10.20 |
HTTP 상태코드 총정리 ( + Redirect / PRG의 개념) (0) | 2021.10.20 |