cookie domain 으로 "vercel.app" 사용 시 생기는 오류
vercel로 배포 시 [...].vercel.app
의 형태로 도메인이 지정되므로 vercel 로 배포한 프런트 서버와 백엔드 서버에서 쿠키를 같은 도메인으로써 공유하고 사용할 수 있을 거라 판단하여 응답 헤더에 Set-Cookie-"domain=vercel.app ...
를 사용했더니
"this attempt to set a cookie via a set-cookie header was blocked because its domain attribute was invaild with regards to the current host url"
메시지와 함께 쿠키가 저장되지 않는 상황을 맞이하여 이유를 찾다 예상되는 이유를 발견 vercel.app 은 공용 도메인(Public Suffix List, PSL)에 등록되어 있어 브라우저가 공용 도메인의 서브도메인 간 쿠키 공유를 막습니다.
PSL (Public Suffix List) 의 이해
PLS는 공용 접미사 목록(Public Suffix List)으로, 인터넷 도메인 이름에서 TLD 또는 eTLD 와 비슷한 역할을 하는 접미사들을 포함하는 목록입니다.
최신 브라우저에 목록이 사용됩니다 쿠키 등록 허용, 주소창에서 도메인 이름 감지 및 사이트 그룹화와 같은 기능에 이를 사용합니다.
TLD (Top-Level Domain) 의 이해
TLD는 최상위 도메인을 의미하며, 인터넷 주소 체계에서 도메인의 가장 끝 부분에 위치하는 가장 높은 계층의 도메인을 의미합니다.
ex) .com, .kr
eTLD (Effective Top-Level Domain) 의 이해
eTLD는 실질적인 최상위 도메인을 의미하며, 사용자가 도메인 이름을 사용할 때 기준이 되는 도메인입니다. eTLD는 TLD 외에도 도메인 이름이 특정 조직, 서비스, 또는 지역에 속하는지를 나타내는 부분을 포함할 수 있습니다.
예를 들어 kr(국가 코드 최상위 도메인)인 TLD 에 co. 가 붙여 사용한 co.kr 은 한국 기업용 도메인으로 사용되는 eTLD 이다. 최종적으로 kr, co.kr 모두 eTLD 인 것
ex) co.kr, kr, com
결론
사실 조금만 생각해보면 잘못된 사용법임을 깨달을 수 있다 만약 vercel.app 같은 공용 도메인에 대한 쿠키를 허용하면, 다른 사용자의 서브도메인에서도 해당 쿠키를 사용할 수 있어 보안 위험이 발생할 수 있다.
즉 쿠키가 저장되지 않는 상황은 Vercel 이 domain name "vercel.app" 을 PSL 에 등록하고 브라우저는 해당 도메인에 대한 쿠키 등록에 제한을 주었기 때문에 쿠키가 저장되지 않은 것으로 보인다.
Vercel has listed their domain name "vercel.app" on the PSL.
해결 방안
따로 도메인을 vercel 에 각각 등록하여 프론트 및 백엔드 서버는 같은 도메인을 가지되 백엔드 서버는 서브 도메인으로 구분하여 사용
exampe
- 프론트 도메인 : examaple.com
- 백엔드 도메인: back.examaple.com
- 쿠키 도메인 옵션: examaple.com
참고
'기타 web 개발 지식' 카테고리의 다른 글
<a role="button"> 과 <button> 차이는 무엇일까? [접근성, SEO] (2) | 2024.11.28 |
---|---|
줄 바꿈 형식 CR? LF? CRLF? (0) | 2023.06.08 |
SVG 의 이해 및 배치 관련 내용 (0) | 2023.04.18 |
ESLint 와 prettier (0) | 2022.09.02 |
스로틀(Throttle)과 디바운스(Debounce) (0) | 2022.08.28 |