Cookie
- 서버가 사용자의 위치에 정보를 저장하고 불러올 수 있는 수단
- 특정 호스트에서 생성된 쿠키는 이후 모든 요청마다 서버로 다시 전송
- 이름, 값, 만료 날짜, 경로 정보로 구성
- 쿠키가 없으면 서버가 쿠키를 자동적으로 생성해서 리스폰스에 담아서 보내준다. 그 이후로는 쿠키가 자동적으로 http 요청에 담겨져서 오게 된다.
- 클라이언트에 저장되어 관리된다.
- 서버와 클라이언트의 대화하기 위한 수단이다.
쿠키의 목적
세션 관리, 개인화, 추적
세션 관리 로그인
쇼핑 카트, 게임 점수 또는 서버가 기억해야 하는 기타 사항
개인화
사용자 환경설정, 테마 및 기타 설정
추적
사용자 동작 기록 및 분석
쿠키의 구성요소
Name :쿠키의 이름
Value : 쿠키의 저장된 값
Expires : 쿠키가 언제 삭제되는지 결정합니다.
1. Domain
쿠키 옵션에서 도메인은 포트 및 서브 도메인(www) 정보, 세부 경로를 포함하지 않습니다.
ex) URL이 http://www.localhost.com:3000/users/login 이라 하면 여기에서 Domain은 localhost.com이 됩니다.
만약 쿠키 옵션에서 도메인 정보가 존재한다면 클라이언트에서는 쿠키의 도메인 옵션과 서버의 도메인이 일치해야만 쿠키를 전송할 수 있습니다.
2. Path
도메인의 루트 경로로 이동할 경우 쿠키가 전송합니다.
ex) http://www.localhost.com:3000/users/login 인 경우라면 여기에서 Path, 세부 경로는 /users/login이 됩니다.
명시하지 않으면 기본으로 / 으로 설정되어 있습니다.
Path가 /users로 설정되어 있고, 요청하는 세부 경로가 /users/login 인 경우라면 쿠키 전송이 가능합니다.
3. MaxAge or Expires
쿠키가 유효한 기간을 정하는 옵션
MaxAge는 앞으로 몇 초 동안 쿠키가 유효한지 설정하는 옵션
Expires은 MaxAge와 비슷하지만 다만 언제까지 유효한지 Date를 지정합니다.
4. 쿠키가 유효한 기간을 정하는 옵션
쿠키를 전송해야 할 때 사용하는 프로토콜에 따른 쿠키 전송 여부를 결정
해당 옵션이 true로 설정된 경우, 'HTTPS' 프로토콜을 이용하여 통신하는 경우에만 쿠키를 전송할 수 있습니다.
5. HttpOnly
자바스크립트에서 브라우저의 쿠키에 접근 여부를 결정
해당 옵션이 true로 설정된 경우, 자바스크립트에서는 쿠키에 접근이 불가
만약 이 옵션이 false인 경우 자바스크립트에서 쿠키에 접근이 가능하므로 'XSS' 공격에 취약
6. SameSite
Cross-Origin 요청을 받은 경우 요청에서 사용한 메소드와 해당 옵션의 조합으로 서버의 쿠키 전송 여부를 결정하게 됩니다.
- Lax :Cross-Origin 요청이면 'GET' 메소드에 대해서만 쿠키를 전송할 수 있습니다.
- Strict : Cross-Origin이 아닌 same-site 인 경우에만 쿠키를 전송 할 수 있습니다.
- None: 항상 쿠키를 보내줄 수 있습니다. 다만 쿠키 옵션 중 Secure 옵션이 필요합니다.
- 이때 'same-site'는 요청을 보낸 Origin과 서버의 도메인이 같은 경우를 말합니다.
서버에서 클라이언트로 쿠키를 처음 전송하게 된다면 헤더에 Set-Cookie라는 프로퍼티에 쿠키를 담아 쿠키를 전송하게 됩니다.
쿠키를 이용한 Client와 Server 흐름
쿠키의 단점
1)쿠키에 대한 정보를 매 헤더(Http Header)에 추가하여 보내기 때문에 상당한 트랙픽을 발생시킨다.
2)결제정보등을 쿠키에 저장하였을때 쿠키가 유출되면 보안에 대한 문제점도 발생할 수 있다.
'백엔드 > session' 카테고리의 다른 글
checkpoint- session (0) | 2021.11.27 |
---|---|
session (0) | 2021.11.23 |
[인증/보안] 기초 HTTPS, https 암호화 방법, 공개키, 개인키,hash, salt (0) | 2021.11.22 |