상세 컨텐츠

본문 제목

[쿠키🍪] SameSite, Path, Domain 와 Request.credentials

CS구멍/네트워크🕊

by :부셔져버린개발자 2025. 2. 11. 17:12

본문

쿠키

HTTP 프로토콜이 무상태인 것을 보완하여 세션 관리, 개인화, 추적의 목적으로 사용되는 작은 데이터이다

도메인당 최대 쿠키 수와 쿠키당 최대 크기를 제한하고 있다

 

쿠키 생성

Set-Cookie : <쿠키이름>=<쿠키값>
Set-Cookie : <쿠키이름>=<쿠키값>
...

 

쿠키 제거

- 영구쿠키 : Expires, Max-Age 속성 설정에 따라 만료일이 결정된다 

- 세션쿠키 : Expires, Max-Age 는 현재 세션이 종료되면 삭제된다

 


쿠키 보안과 정책

보안적인 이유로 브라우저는 쿠키를 어떻게 저장하고, 언제 전송할지에 대한 정책을 엄격하게 관리한다.
교차 사이트 요청이 있을 때 쿠키가 자동으로 전송되지 않도록 제한을 두는 방식으로 보안을 강화한다.
SameSite, Secure, Path, Domain 등의 쿠키 속성은 교차 사이트 요청에서 쿠키를 전송하는 방식을 제어하는 중요한 역할을 한다
 

 
 

Domain

Domain은 쿠키가 유효한 도메인(어떤 서버가 쿠키를 수신할 수 있는지)을 설정하는 속성이다.
예를 들어 example.com으로 설정하면 example.com 및 모든 하위 도메인에서 쿠키가 유효해진다.

지정하지 않으면 Domain 쿠키는 해당 속성을 설정한 서버에서 사용할 수 있지만 하위 도메인에서는 사용할 수 없다. 
 

잘못된 도메인 예시 >> https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#invalid_domains
 

Path

Path는 쿠키가 유효한 URL 경로를 지정하는 속성이다.
Path=/ 로 설정하면 모든 URL 경로에서 쿠키가 유효하다.
 

HttpOnly

 이 속성은 자바스크립트에서 쿠키를 접근하지 못하도록 제한한다.
이를 설정하면 클라이언트 측에서 JavaScript가 쿠키를 읽을 수 없게 되므로, XSS 공격을 방어하는 데 유용하다.
 
 

Secure

Secure 속성이 설정된 쿠키는 HTTPS 연결을 통해서만 전송된다.

이 속성은 쿠키가 암호화된 연결에서만 안전하게 전송되도록 보장한다. (로컬호스트 제외)

중간자 공격을 막을 수 있다. 
 

SameSite

쿠키가 교차 사이트 요청(타사 쿠키)에 포함되지 않도록 제어하는 기능이다.
SameSite 값에 따라 쿠키가 어느 상황에서 전송되는지 결정된다.
 
- Strict : 교차 사이트 요청 시 쿠키가 전송되지 않는다 
- Lax : 교차 사이트 GET 요청 시에만 쿠키 전송, POST 요청은 포함되지 않는다
- None : 교차 사이트 요청에서도 쿠키를 전송하도록 허용하지만, Secure 속성이 필요하다 


Request.credentials 

cross-origin 요청의 경우 user agent가 다른 도메인으로부터 cookie 들을 전달해야만 하는가 아닌가를 나타낸다

사용될 수 있는 3가지 값은 아래와 같다 

 

- omit : 절대로 Cookie 들을 전송하거나 받지 않는다

- same-origin : URL이 호출 script와 동일 출처(same origin)에 있다면, user credentials(cookies, basic http auth 등)을 전송한다(default값)

- include : cross-origin 호출이라도 언제나 user credentials(cookies, basic http auth등)을 전송한다 

예를 들어, CORS 요청에서 Set-Cookie로 받은 세션을 유지하여 쿠키를 보내려면 필요하다

⚠ 서버에서 Access-Control-Allow-Credentials: true가 설정되지 않으면 credentials: 'include'가 작동하지 않는다 

 

 

[참고 문서] Request.Credentials

https://developer.mozilla.org/ko/docs/Web/API/Request/credentials

 

Request.credentials - Web API | MDN

Request 인터페이스의 credentials 읽기 전용 속성은 cross-origin 요청의 경우, user agent가 다른 도메인으로부터 cookie 들을 전달해야만 하는가 아닌가를 나타낸다. 이것은 XHR 의 withCredentials flag 과 비슷하

developer.mozilla.org

 

 

 


[참고 문서] 쿠키
https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies

 

Using HTTP cookies - HTTP | MDN

A cookie (also known as a web cookie or browser cookie) is a small piece of data a server sends to a user's web browser. The browser may store cookies, create new cookies, modify existing ones, and send them back to the same server with later requests. Coo

developer.mozilla.org

 

728x90

관련글 더보기