SOP(Same-Origin Policy)

ppou·2020년 4월 7일
1

Web Technologies

목록 보기
2/3
post-thumbnail

SOP?

동일 출처 정책(SOP, Same-Origin Policy)는 웹 브라우저 보안을 위해 Same-Origin(프로토콜, 호스트, 포트가 같은)의 서버로만 리소스를 주고 받도록 상호작용을 제한하는 보안 방식입니다.
이러한 SOP를 이용해 악의적인 리소스를 분리해서 공격의 경로를 줄일 수 있습니다.

SOP 적용범위

기본적으로 HTTP Request는 Cross-Site HTTP Request(교차 출처 요청)이 가능하므로 모든 HTTP 요청에 SOP가 적용되는 것은 아닙니다.

SOP 허용

SOP가 적용되지 않는 Cross-Origin의 예는 다음과 같습니다.

  • <img> 태그로 다른 도메인의 이미지 파일 요청
  • <link> 태그로 다른 도메인의 CSS 요청
  • <script> 태그로 다른 도메인의 js 파일 요청

특히 <script> 태그가 SOP 정책에 속하지 않기 때문에, SOP 우회를 위해서 jsonp를 사용할 수 있습니다. 하지만 현재는 보안상의 이슈로 많이 사용하지 않습니다.

jsonp 참고

https://brownbears.tistory.com/451
https://blog.seotory.com/post/2016/04/understand-jsonp

SOP 적용

SOP가 적용되는 Cross-Origin의 예는 다음과 같습니다.

  • Ajax(XMLHttpRequest, XHR)
  • Fetch API

<script> </script> 태그안에서 생성된 Cross-Site HTTP Request는 SOP의 적용을 받기때문에 요청이 불가능합니다.

Ajax

브라우저가 가지고있는 XMLHttpRequest 객체를 이용해서 전체 페이지를 새로 고치지 않고도 페이지의 일부만을 위한 데이터를 로드하는 기법이다.
Ajax를 한마디로 정의하자면 JavaScript를 사용한 비동기 통신, 클라이언트와 서버간에 XML 데이터를 주고받는 기술이라고 할 수 있다.
https://coding-factory.tistory.com/143

SOP 완화

SOP는 다음과 같은 이유로 불편함이 자주 발생됩니다.

  • 개발 시 외부 API를 사용하는 경우도 많고, 클라이언트와 서버를 분리하여 개발하는 경우도 많다.
  • Ajax가 널리 사용되면서 XMLHttpRequest에 대해서 Cross-Site HTTP Request의 필요성이 증가했다.

이러한 불편함을 해결하기 위해 등장한 것이 CORS(Cross-Origin Resource Sharing) 입니다.

참고

https://homoefficio.github.io/2015/07/21/Cross-Origin-Resource-Sharing/
https://developer.mozilla.org/ko/docs/Web/Security/Same-origin_policy
https://velog.io/@takeknowledge/로컬에서-CORS-policy-관련-에러가-발생하는-이유-3gk4gyhreu
https://java119.tistory.com/67
https://developer.mozilla.org/ko/docs/Web/HTTP/CORS
https://brunch.co.kr/@adrenalinee31/1
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Origin
https://developer.mozilla.org/ko/docs/Web/HTTP/CORS

profile
Security

0개의 댓글