CORS와 쿠키에 대해서 공부하다가 Cross-Origin과 Same-Site가 헷갈려 명확하게 공부를 했다.
CORS에서 Cross-Origin과 쿠키의 Same-Site
Cross-Origin
- Cross-Origin은 아주 엄격하다.
- Cross-Origin은 호스트 네임, 포트, 스키마까지 전부 확인한다.
- 예를 들어, https://www.example.com:443 이라는 URL이 있을 때, 각 요소들은 다음과 같다.
1) 호스트 네임: example.com
2) 포트: 443
3) 스키마: https
- 위의 요소 중 하나라도 일치하지 않는 게 있으면 다 Cross-Origin이다.
- 특히, 서브 도메인까지도 일치해야 하기 때문에 굉장히 엄격하다고 볼 수 있다.
- 아무래도 이런 일을 겪지 않기 위해서는 프론트엔드와 백엔드가 구분되었을 때, 앞단에 게이트웨이를 두면 CORS를 편하게 해결할 수 있을 것이라고 생각한다.
Same-Site
- 쿠키의 경우에는 Same-Site에만 전송되도록 설정을 할 수 있다.
- 이때, Same-Site는 eTLD+1을 확인한다.
- 그러면 TLD는 뭐고, eTLD는 뭐고, eTLD+1은 뭘까?
1) TLD: 최상위 도메인이다. 예를 들어, .org, .com 등이 존재한다.
2) eTLD (effective TLD): 최상위 도메인이 아니더라도 실제로 독립적으로 관리되는 도메인으로, 유효 최상위 도메인이라고 할 수 있다. .github.io, .co.jp 등이 존재하며, 공개된 eTLD 리스트를 통해 어떤 도메인들이 있는지 알 수 있다.
3) eTLD+1: eTLD 바로 왼쪽에 위치한 하위 레벨 도메인까지 합쳐서 eTLD+1이라고 부른다.
- https://www.example.com:443 에서 eTLD는 .com이며, eTLD+1은 example.com이다.
- Same-Site의 경우 eTLD+1이 같으면 Same-Site라고 인식하며, 포트, 스키마, 서브 도메인이 달라도 상관없다.
최근 프로젝트에서 CORS가 너무 화가 나서 *로 전부 허용을 해준적이 있는데, 보안 문제를 인식하고 있기 때문에 수정을 해 나가려고 한다.
'개발' 카테고리의 다른 글
Kafka를 window 및 Mac os에서 설치 및 실행하는 법 (3) | 2025.02.14 |
---|---|
분산 트랜잭션 및 보상 트랜잭션 (0) | 2025.02.12 |
트랜잭션과 격리성 그리고 낙관적 락과 비관적락에 대한 얘기 (0) | 2025.02.09 |
Redis로 분산락 관리하기 (Spring에 Redisson 적용) (0) | 2025.02.08 |
Redis의 고가용성 전략(Sentinel, Clustering) (0) | 2025.01.19 |