쿠키(Cookie)란?
- 쿠키는 클라이언트의 정보를 가지고 있는 텍스트 형식의 데이터이다.
- 클라이언트가 저장하게 되며, 서버가 쿠키를 요청할시 서버로 전달하게 된다.
언제 사용할까?
- 로그인 세션 유지 (보통 세션 ID 값을 통해서 처리함.)
- 광고 정보 트래킹
- 네트워크 트래픽 추가 유발
쿠키가 사용되는 것을 간단한 예제와 함께 알아보자.
**request**
POST /login HTTP/1.1
user=BB_GG
-------------------------------
**response**
HTTP/1.1 200 OK
Set-Cookie: user=BB_GG
BB_GG님이 로그인했습니다.
- 클라이언트가 로그인을 할 때 user 이름을 같이 보내주게 되면
서버에서는 쿠키를 설정하여 클라이언트의 웹 브라우저에 저장하게 된다.
**request**
POST /welcome HTTP/1.1
Cookie: user=BB_GG
-------------------------------
**response**
HTTP/1.1 200 OK
BB_GG님 안녕하세요.
- 그러면 후에 다시 페이지에 접속하게 됬을 때,
웹 브라우저는 자동으로 Cookie 헤더를 만들어서 보내주게 된다. - 서버에 대해 쿠키가 등록되어있다면, 서버에 요청시 쿠키 정보를 항상 전달해주게 된다.
- 네트워크 트래픽이 추가적으로 유발되게 된다.
- 보안에 문제가 생길 수도 있기에 중요한 정보는 절대 저장해서는 안되고
최소한의 정보만을 사용하는게 좋다. - 서버에 전송하지 않고 웹 브라우저 내부에 데이터를 저장하고 싶다면
- 웹 스토리지(LocalStorage)*를 참고하여 사용해보자.
쿠키의 여러 옵션
set-cookie: sessionId: ~; expires= ~; path= ~; domain ~;, secure =~;
- 쿠키의 생명주기
- 쿠키가 유효한 시간을 설정할 수 있다.
- 두 가지 종류가 있다.
- 세션 쿠키 - 만료 날짜를 생략하면 브라우저 종료시 까지 유지
- 영속 쿠키 - 만료 날짜를 입력하면 해당 날짜까지 유지
set-cookie: expires=Sat, 17-Mar-2022 10:44:33 GMT // 언제까지 유효한지 설정 (만료일) set-cookie: max-age= 3600 // 초 단위로 설정 가능 (예제는 3600초), 0으로 설정 시 쿠키 삭제
- 쿠키의 도메인
- 쿠키에 접근할 수 있는 도메인을 설정할 수 있다.
- 두 가지 경우가 있다.
- 도메인 명시 - 명시 했을시 명시한 기준 도메인 + 서브 도메인 포함 접근가능
- 도메인 생략 - 현재 기준 도메인만 적용
set-cookie: domain=example.org
- 쿠키의 경로
- 쿠키에 접근할 수 있는 경로를 설정할 수 있다.
- 작성된 경로를 포함한 하위 경로 페이지만 쿠키에 접근할 수 있다.
- 일반적으로 path=/ 루트로 지정하여 사용된다.
set-cookie: path=/home
- 쿠키의 보안
- Secure
- 쿠키는 http, https를 구분하지 않고 전송을 하는데, Secure를 적용하면
https인 경우에만 전송하게 된다.
- 쿠키는 http, https를 구분하지 않고 전송을 하는데, Secure를 적용하면
- HttpOnly
- XSS 공격을 방지할 때 사용된다.
- 자바스크립트에서 접근이 불가하고 HTTP 전송에서만 사용되게 하고싶을 때 쓴다.
- SameSite
- XSRF 공격을 방지할 때 사용된다.
- 요청 도메인과 쿠키에 설정된 도메인이 같은 경우에만 쿠키를 전송한다.
- Secure
set-cookie: secure, HttpOnly, SameSite
'오늘의 공부 > WEB' 카테고리의 다른 글
캐시와 조건부 요청 (0) | 2022.04.03 |
---|---|
HTTP 헤더 (0) | 2022.03.20 |
HTTP 상태코드 (0) | 2022.03.20 |
HTTP 메서드의 활용 (0) | 2022.03.20 |
HTTP 메서드 (0) | 2022.03.20 |