본문 바로가기

Web 관련

SOP(Same Origin Policy)

SOP

웹 브라우저가 사용자를 보호하기 위해 만들어짐

서로 다른 오리진에서는 사용자를 보호하기 위해 만들어짐

서로 다른 오리진에서는 스크립트의 상호작용을 막음

 

오리진은 프로토콜(protocol, scheme), 포트(port) 호스트(host)로 구성

https와 http(프로토콜이 다름)인 경우 SOP위반

test.com과 example.com(호스트가 다름)

test.com:80과 test.com:8888(포트가 다름)

***Internet Explorer는 동일 출처 정책 검사에 포트를 포함하지 않음****

 

iframe의 Document에서 상위 Document에 접근할 때도

SOP가 적용되어있다면 접근할 수 없다.

 

발 또는 운영의 목적으로 다른 오리진들과 리소스를 공유해야하는 상황이 발생하며,

SOP가 적용된 상태에서도 리소스를 공유하는 방법 존재

 

postMessage

메시지를 주고받기 위한 이벤트 핸들러를 이용해 리소스를 공유

JSONP

스크립트 태그를 통해 외부 자바스크립트 코드를 호출하면

현재 오리진에서 해당 코드가 실행된다는 점을 이용한 방법

스크립트 태그를 통해 다른 오리진의 리소스를 요청

응답 데이터를 현재 오리진의 Callback 함수에서 다루는 방식을 통해 리소스를 공유

Cross Origin Resource Sharing (CORS) 헤더 사용

다른 오리진이 허용하는 설정 등을 HTTP 헤더를 통해 확인 한 후

허용하는 요청을 보내 리소스를 공유하는 방식

***

CORS 헤더 이용 시 두 오리진이 각각 HTTP, HTTPS 와 같이

서로 다른 스케마을 사용하게 되면 웹 브라우저에서 허용하지 않을 수도 있음

***

'Web 관련' 카테고리의 다른 글

WSGI, WAS, CGI  (0) 2020.06.03
CGI (Common Gateway Interface)  (0) 2020.05.24
Web server and Web application  (0) 2020.05.13
URI URL  (0) 2020.04.29
CSP(Content-Security-Policy)와 CSP bypass  (0) 2020.03.10