쿠키 (Cookie)
- 서버가 웹 브라우저에 이용자의 상태를 유지하기 위해 정보를 저장
- 사용자 인증 목적
- HTTP는 무상태(Stateless) 프로토콜 - 클라이언트와 서버가 요청과 응답을 주고 받으면 연결 해제
- 그 다음 요청에 서버는 이전 요청을 기억하지 못함
- 쿠키 저장소에 쿠키가 저장되면 모든 요청에 쿠키 정보 자동 포함
- 그러나 모든 요청에 쿠키를 포함하게 되면 보안 상의 문제를 일으킬 수 있으므로 이를 제약하는 방법이 존재
사용
set-cookie: sessionId=abcde1234; expires=Thu, 26-Dec-2024 00:00:00 GMT; path=/; domain=.google.com; Secure
- 사용자 로그인 세션 관리, 광고 정보 트래킹에 많이 사용
- 쿠키 정보는 항상 서버에 전송됨
- 네트워크 트래픽을 추가 유발하여 최소한의 정보만 사용하는 것이 중요(세션 id, 인증 토큰)
- 서버에 전송하지 않고 웹브라우저 내부에 데이터를 저장하고 싶으면 웹 스토리지(
localStorage
,sessionStorage
) 참고
- 보안에 민감한 데이터는 저장하면 안 됨
생명주기 (Expires, max-age)
Set-Cookie: expires=Thu, 26-Dec-2024 00:00:00 GMT
- 만료일이 되면 쿠키 삭제
Set-Cookie: max-age=3600
(3600초)- 0이나 음수를 지정하면 쿠키 삭제
- 세션 쿠키 만료 날짜를 생략하면 브라우저 종료시까지만 유지
- 영속 쿠키 만료 날짜를 입력하면 해당 날짜까지 유지
도메인 지정
domain=example.org
- 명시 명시한 문서 기준 도메인 + 서브 도메인 포함
domain=example.org
지정해서 쿠키 생성시example.org
는 물론dev.example.org
도 쿠키 접근
- 생략 현재 문서 기준 도메인만 적용
example.org
에서 쿠키를 생성하지만 domain 지정은 생략할 경우example.org
에서만 쿠키 접근이 가능하고dev.example.org
와 같은 서브도메인은 쿠키 미접근
쿠키의 경로(Path) 지정
path=/home
- 해당 경로를 포함한 하위 경로 페이지에서만 쿠키 접근
- 일반적으로
path=/
루트로 지정
쿠키의 보안 지정
Secure
- 쿠키는 http, https를 구분하지 않고 전송되나
Secure
을 적용하면 https인 경우에만 전송
- 쿠키는 http, https를 구분하지 않고 전송되나
HttpOnly
- XSS 공격 방지
- 자바스크립트에서 접근 불가(document.cookie)
- HTTP 전송에만 사용
SameSite
- XSRF 공격 방지
- 요청 도메인과 쿠키에 설정된 도메인이 같은 경우에만 쿠키 전송
캐시
- 웹 페이지 요소들을 저장하는 임시 저장소
- 특히 후에 필요할 것 같은 요소들, 이미지 파일 등
- 웹 페이지를 빠르게 렌더링하는 목적
캐시 적용 전
- 동일한 데이터에 대해서도 계속 네트워크를 통해 다운로드 받아야 함
- 네트워크는 매우 느리고 비용이 비쌈
- 브라우저 로딩 속도가 느려 느린 사용자 경험을 유발
캐시 적용 후
- 캐시 유효 시간동안 네트워크를 사용할 필요가 없어져 비싼 네트워크 사용량을 줄임
- 브라우저가 로딩 속도가 빨라져 빠른 사용자 경험 제공
캐시 유효 시간 초과 시
- 캐시 유효시간이 초과되면 서버를 통해 다시 데이터를 조회하고 캐시를 갱신
- 이 때 다시 네트워크 다운로드가 발생
'WEB' 카테고리의 다른 글
HTTP header 2 - 검증 헤더와 조건부 요청 (0) | 2024.05.30 |
---|---|
HTTP header 1 - 일반헤더 (0) | 2024.05.28 |
브라우저의 개념과 동작 과정 (0) | 2024.04.26 |
CSR(클라이언트 사이드 렌더링)과 SSR(서버 사이드 렌더링) (0) | 2024.04.19 |
HTTP Status Code 상태코드 (0) | 2024.04.06 |