R's Hacking Daily Log

SOP (Same Origin Policy) 본문

Daily-Note/web

SOP (Same Origin Policy)

hanhxx 2023. 5. 14. 13:20

Same Origin Policy

Same Origin Policy란 web security와 관련하여 만들어진 개념적인 정책이라 할 수 있다.

 

web을 이용하는 동안 다양한 리스크가 발생할 수 있지만 SOP는 그중에서도

서로 다른 웹 페이지 간의 상호작용에 대한 규칙을 정의한다.

 

 

사용자가 실수로라도 악의적인 page에 접근했다고 한들,

다른 page를 브라우징 하는 데에는 그 어떤 피해(영향)가 있어서는 안 된다는 것을 목적으로 

 

다시 말해, 하나의 web page가 다른 web page에 의해 변경, 조작 등 영향을 주지 못하게 지켜야 할 규칙을

SOP라고 한다. 

 

 


그렇다면 Origin이라는 것은 어떻게 정의할 수 있을까? 

 

origin을 구분하기 위해서는 url의 protocol, domain, port 정보를 비교하게 된다.

 

기본적으로 url은 

Protocol://Domain:Port/Path

와 같이 정해진 형태로 만들어진다.

 

이때 protocol은 HTTP or HTTPS일 수 있고 protocol에 따라 80 or 443 port를 사용하며

접근하고자 하는 host가 무엇이냐에 따라 Domain(hostname)도 당연히 달라진다. 

 

same origin policy에서는 이 세 가지 정보를 비교하여 same origin인지 아닌지의 여부를 판단한다. 

 

 

http://sec.inu.edu/access/~~/abc.jpg
https://sec.inu.edu:443/quiz/~~

다음과 같은 두 url이 있을 때, same origin인지 판별하기 위해서 볼 값은 

1. http & https
2. sec.inu.edu
3. 80 & 443 port이다.

 

우선 첫 번째 url에서는 http protocol을 사용하고 두 번째 url에서는 https protocol이 사용되었기 때문에

두 url은 same origin일 수 없다. 

 

두 url의 domain은 sec.inu.edu로 동일하지만 각각 80 & 443 port를 사용한다는 점이

same origin일 수 없는 두 번째 이유가 된다.

 

** 포트는 지정해서 사용하는 경우도 있지만 보통 browser로는 default port를 사용하기 때문에 protocol이

다르다고 한다면 port도 달라지겠구나 생각할 수 있다.

 

** Domain part를 비교할 때는 subdomain까지 모두 동일해야 한다.

 

 

결과적으로 서로 다른 site의 url을 보고 same origin이 아니라고 판단이 되는 경우

두 site의 관련 데이터는 각각 서로에게 영향을 주지 못하도록 처리된다. 

 

** fetch 하는 경우에는 상황에 따라 origin이 할당되는 방식이 달라진다.

A site에서 B site의 js를 fetch하는 경우에 이 js의 origin은 A's origin으로 지정되지만

A site에서 B site의 image를 fetch하는 경우에는 image의 origin은 B's origin으로 지정된다. 

 

 

EXCEPT )

site 간의 상호작용이 필요한 경우에서 Cross Origin Resource Sharing으로 제한된 공유는 가능하도록 허용된다. 

Ex) js에서의 postMessage function

'Daily-Note > web' 카테고리의 다른 글

Cookie Policy  (0) 2023.05.18
DVWA로 보는 간단한 CSRF 실습  (0) 2023.04.08
CSRF Defense  (0) 2023.04.08
XSS  (0) 2023.04.05
CSRF Attack  (0) 2023.04.04
Comments