[Cookie]
: 서버에서 클라이언트에 데이터를 저장하는 방법의 하나
- 서버 -> 클라이언트 / 클라이언트 -> 서버 로 쿠키 전송이 가능함
[특징]
: 서버가 클라이언트에 데이터를 저장할 수 있으나, 저장된 이후에는 특정 조건을 만족할 경우 데이터를 가져올 수 있음
1. Domain
: www.google.com과 과 같은 서버에 접속할 수 있는 이름
: 쿠키 옵션에서 도메인은 포트 및 서브 도메인 정보, 세부 경로를 포함하지 않음
- 쿠키 옵션에서 도메인 정보가 존재한다면 클라이언트에서는 쿠키의 도메인 옵션과 서버의 도메인이 일치해야만 쿠키를 전송할 수 있음
2. Path
: (세부 경로는) 서버가 라우팅 할 때 사용하는 경로
: 명시하지 않을 경우 기본으로 / 으로 설정
- path를 전부 만족하는 경우 Path가 추가로 더 존재하더라도 쿠키를 서버에 전송할 수 있음
즉, 세부 경로를 포함하고 있기만 하면 됨
3. MaxAge or Expires
: 쿠키가 유효한 기간을 정하는 옵션
: 쿠키가 영원히 남아있을 경우 탈취 위험성이 커지기 때문에 보안 측면에서 중요함
- 세션 쿠키(Session Cookie)
: MaxAge 또는 Expires 옵션이 없는 쿠키로, 브라우저가 실행중일 때 사용할 수 있는 임시 쿠키
: 브라우저 종료시 쿠키는 삭제됨
- 영속성 쿠키(Persistent Cookie)
: 브라우저의 종료 여부와 상관없이 MaxAge 또는 Expires에 지정된 유효시간만큼 사용 가능한 쿠키
4. Secure
: 쿠키를 전송해야 할 때 사용하는 프로토콜에 따른 쿠키 전송 여부를 결정
: HTTPS 프로토콜을 이용하여 통신하는 경우에만 쿠키 전송이 가능하며, Secure 옵션이 없다면 프로토콜 상관없이 전송 가능
5. HttpOnly
: 자바스크립트에서 브라우저의 쿠키에 접근 여부를 결정
: 옵션이 true일 경우 자바 스크립트에서 쿠키에 접근이 불가하며, 기본 디폴트값은 false로 false인 경우 XSS 공격에 취약
6. SameSite
: Cross-Origin 요청을 받은 경우 요청에서 사용한 메소드와 해당 옵션(GET, POST, PUT 등)의 조합으로 서버의 쿠키 전송 여부를 결정
- Lax : Cross-Origin 요청이면 GET 메소드에 대해서만 쿠키 전송 가능
- Strict : Cross-Origin이 아닌 same-site인 경우에만 쿠키 전송 가능
- None : 항상 쿠키를 보낼 수 있으며, Secure 옵션이 필요
* same-site는 요청을 보낸 Origin과 서버의 도메인/프로토콜/포트가 같은 경우를 말하며, 하나라도 다를 경우 Cross-Origin
- 옵션을 지정한 이후 서버에서 클라이언트로 쿠키를 처음 전송하게 된다면 헤더에 Set-Cookie라는 프로퍼티에 쿠키를 담아 전송. 이후 클라이언트 혹은 서버에서 쿠키를 전송해야 할 경우 클라이언트는 헤더에 Cookie라는 프로퍼티에 쿠키를 담아 서버에 쿠키를 전송
'공부 자료 > Spring' 카테고리의 다른 글
[Spring Security] Hashing & Salt (0) | 2022.11.22 |
---|---|
[Spring Security] Session (0) | 2022.11.22 |
[Spring Security] HTTPS (HTTP+Secure) (0) | 2022.11.22 |
[Spring] 애너테이션 Annotation 정리 (계속 추가중) (1) | 2022.11.05 |
[Spring MVC] 트랜잭션 전파/격리 레벨 (0) | 2022.11.05 |