티스토리 뷰
이전 글에서 HTTP의 특징인 비연결성과 무상태성을 보완하기 위해 쿠키와 세션이 도입되었다고 했었다.
잠깐 복습하자면 HTTP는 위와 같은 특성을 가지기 때문에 서버는 클라이언트를 매번 확인해야 한다.
페이지를 이동할 때마다 로그인을 새로 해주어야 한다는 의미이다.
- Connectionless - 클라이언트가 요청을 한 후 응답을 받으면 서버가 그 연결을 끊어 버리는 특성
- Stateless - 연결을 끊는 순간 클라이언트와 서버의 통신이 끝나며, 상태 정보를 유지하지 않는 특성
2022.08.03 - [Development/Network] - [네트워크]웹(WEB)
2022.08.04 - [Development/Network] - [네트워크]HTTP
쿠키 | 세션 | |
저장 위치 | 클라이언트 로컬 | 서버 자원 사용 |
보안 | 취약(연결성 > 안정성) | 우수(안정성 > 연결성) |
속도 | 빠름 | 중간 |
수명 | 브라우저 종료시에도 남음 | 브라우저 종료와 함께 삭제 |
사용 예시 | 사이트 아이디/비밀번호 저장 쇼핑몰 장바구니 |
로그인 등 보안상 중요한 작업 |
이번 글에선 먼저 쿠키에 대해 조금 더 알아본다.
Cookie
쿠키, 혹은 HTTP 쿠키는 웹 서버에 의해 생성되는 데이터 패킷으로, 클라이언트의 기기에 저장된다.
조금 풀어서 말하자면 바로 삭제되지 않는 특성을 이용해 서버가 인증정보를 쿠키에 담아 클라이언트에게 전송하고
클라이언트는 전달받은 쿠키를 요청과 함께 전송하여 무상태성(Stateless)을 극복하고 연결 상태를 유지(Stateful)한다.
하지만 이처럼 안정성보다 연결성을 우선으로 하기 때문에 보안이 취약하다.
또한 일종의 기록 파일이기 때문에 같은 웹 사이트에서도 사용자의 활동에 따라 수시로 변경되고 갱신되며
서버의 필요에 따라 클라이언트에서 쿠키를 불러오기도 한다.
참고로 서버에서 클라이언트로 처음 쿠키를 전송할 땐 헤더의 'Set-Cookie'프로퍼티에 쿠키를 담아 보내며
이후 클라이언트에서 서버 쪽으로 쿠키를 전송할 땐 'Cookie'프로퍼티에 쿠키를 담아 전송한다.
이때 클라이언트와 서버는 쿠키를 다시 가져갈 수 있는 조건을 지정할 수 있는데, 이를 쿠키 옵션이라고 한다.
이어서 주로 사용되는 쿠키 옵션에 대해 알아보자.
Domain
전에 URL과 URI에 대한 글에서 도메인에 대해 알아본 적이 있다.
2022.08.02 - [Development/Network] - [네트워크]URL, URI, Domain, DNS
URI에서 도메인이란 위 그림과 같이 www.pinterest.com과 같은 기억하기 쉬운 이름을 말한다.
쿠키 옵션에서 도메인이란 이 도메인 중 서브 도메인을 제외한 부분, 즉 pinterest.com을 가리키게 된다.
만약 쿠키 옵션에 도메인 정보가 존재한다면 쿠키의 옵션과 서버의 도메인이 일치하는 경우에만 쿠키를 전송할 수 있다.
Path
Path는 위에 표시한 것처럼 리소스까지의 세부 경로를 가리킨다(/pin/776167317048025709).
명시하지 않는다면 기본으로 / 이 설정되어 있다.
Path 옵션의 특징은 설정된 Path를 모두 만족하기만 한다면 뒤에 추가 경로가 존재하더라도 쿠키를 전송할 수 있다는 것이다.
예를 들면 "/pin/776167317048025709/rx93"과 같이 추가 경로가 있어도 쿠키를 보낼 수 있다는 뜻이다.
MaxAge / Expires
쿠키의 유효기간을 정하는 옵션이다.
MaxAge는 쿠키의 수명을 초 단위로 설정하며 Expires는 시간과 날짜 단위로 지정한다.
또한 이렇게 수명이 지정된 쿠키를 영속성 쿠키(Persistence Cookie)라 부르며
수명이 지정되지 않아 브라우저 종료와 함께 삭제되는 쿠키를 세션 쿠키(Session Cookie)라 부른다.
Secure
쿠키 전송 시 사용하는 프로토콜을 설정한다.
해당 옵션이 'true'일 경우 HTTPS를 이용하는 경우에만 쿠키를 전송할 수 있다.
Secure 옵션이 지정되어있지 않다면 프로토콜에 상관없이 쿠키를 전송할 수 있다.
HttpOnly
자바스크립트의 쿠키 접근 여부를 결정한다.
'true'인 경우 자바스크립트는 쿠키에 접근이 불가능하며
명시되지 않는 경우 기본으로 'false'가 지정되어 있어 XSS 공격에 취약하다.
Samesite
교차 출처 요청(Cross-Origin Request)을 받은 경우의 쿠키 전송 여부를 결정한다.
여기서 Same-site란 클라이언트와 서버의 프로토콜, 도메인, 포트가 같은 경우를 말한다.
- Lax - Cross-Origin Request일 때 'GET' 메서드에 대해서만 쿠키 전송 가능
- Strict - Cross-Origin Request의 경우 쿠키 전송 불가
- None - 항상 쿠키 전송 가능
'Development > Network' 카테고리의 다른 글
[Network]JWT(JSON Web Token) (0) | 2022.09.23 |
---|---|
[Network]세션 기반 인증 vs. 토큰 기반 인증 (0) | 2022.09.23 |
[Network]세션(Session) (4) | 2022.09.20 |
[Network]해싱(Hashing) (1) | 2022.09.20 |
[Network]TLS, HTTPS (1) | 2022.09.20 |
[네트워크]REST API (1) | 2022.08.04 |
- Total
- Today
- Yesterday
- 야경
- 세계여행
- 유럽
- Backjoon
- 세계일주
- 알고리즘
- BOJ
- 기술면접
- 백준
- 유럽여행
- 면접 준비
- RX100M5
- Python
- 스프링
- Algorithm
- 리스트
- 자바
- 여행
- 중남미
- a6000
- 스트림
- 세모
- 지지
- 칼이사
- java
- 파이썬
- 맛집
- 남미
- 동적계획법
- spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |