본문 바로가기
Web Hacking

[Web Hacking] 브라우저 보안 정책 - SOP, CORS, Origin

by spareone 2026. 3. 10.

웹 브라우저는 사용자를 보호하기 위해 여러 가지 보안정책을 적용합니다.
그중 가장 기본이 되는 것이 SOP(Same-Origin Policy) 이고, 이를 예외적으로 완화하는 방식이 CORS(Cross-Origin Resource Sharing) 입니다.

 

1. Origin

브라우저에서 Origin 이란 보통 아래 3가지 조합을 의미합니다.

  • 프로토콜(Scheme): http, https
  • 호스트(Host): www.test.com, api.test.com, 192.168.0.10
  • 포트(Port): 80, 443, 8080

즉, 이 3개가 모두 같아야 같은 Origin 입니다.

예시

https://www.test.com

이 주소의 Origin은 다음과 같습니다.

  • 프로토콜: https
  • 호스트: www.test.com
  • 포트: 기본적으로 443
  •  

같은 Origin

위 둘은 프로토콜, 호스트, 포트가 모두 같으므로 같은 Origin 입니다.

이외의 것은 모두 다른 Origin입니다. (서브도메인, 포트, 프로토콜, IP가 다르면 다른 Origin)

 

 

2. SOP (Same-Origin Policy)

SOP는 브라우저의 대표적인 보안정책입니다.

한 웹사이트의 스크립트가 다른 Origin의 데이터에 함부로 접근하지 못하게 막는 정책입니다.

 

예를 들어 사용자가 www.test.com 에 로그인한 상태라고 하겠습니다.
이때 악성 사이트 www.hacker.com 이 사용자의 브라우저에서 www.test.com 의 민감한 데이터에 자유롭게 접근할 수 있다면 매우 위험합니다.

그래서 브라우저는 기본적으로 다른 Origin 간 데이터 접근을 제한합니다.

 

대표적으로 다음과 같은 접근이 제한됩니다.

  • 다른 사이트의 응답 데이터 읽기
  • 다른 Origin의 DOM 접근
  • 다른 Origin의 AJAX/fetch 응답 읽기

예를 들어:

브라우저는 요청 자체가 나갈 수는 있어도,
응답 내용을 스크립트가 읽는 것은 차단할 수 있습니다.

 

 

브라우저는 다른 사이트 자원 사용을 완전히 금지하지는 않지만,
스크립트가 다른 Origin의 민감한 데이터에 접근하는 것은 SOP로 제한합니다.

 

 

3. CORS (Cross-Origin Resource Sharing)

SOP 때문에 기본적으로는 다른 Origin의 응답을 읽을 수 없는데,
서버가 명시적으로 허용하면 예외적으로 읽을 수 있게 하는 방식입니다.

 

예를 들어:

둘은 호스트가 다르므로 다른 Origin 입니다.

브라우저에서 www.test.com 의 JS가 api.test.com 에 fetch 요청을 보내면,
브라우저는 응답 헤더를 보고 이 요청이 허용되는지 판단합니다.

서버가 아래처럼 응답하면:

Access-Control-Allow-Origin: https://www.test.com
 

브라우저는 https://www.test.com 에서 온 요청에 대해 응답을 읽도록 허용할 수 있습니다.

 

 

중요한 점은, CORS는 브라우저가 임의로 푸는 것이 아니라 서버가 응답 헤더로 허용해야 동작합니다.

즉 클라이언트 쪽 JS에서 마음대로 “CORS 허용”을 설정할 수 있는 것이 아닙니다.

허용 여부는 결국 응답 서버가 결정합니다.

 

4. SOP와 CORS 관계

둘의 관계를 정리하면 다음과 같습니다.

SOP

  • 기본 보안정책
  • 다른 Origin의 데이터 접근을 제한

CORS

  • 서버가 허용한 경우에 한해
  • SOP 제한을 일부 완화

즉:

SOP가 기본 차단 정책이고, CORS는 예외 허용 정책입니다.

 

 

 

댓글