감자 텃밭

[WEB] Same Origin Policy (SOP) 본문

Web/Web Theory Information

[WEB] Same Origin Policy (SOP)

g2h 2023. 2. 17. 23:43

SOP란 무엇인가?

SOP는 Same Origin Policy의 준말로 말 그대로 즉 "동일 출처 정책"을 뜻 한다.
이게 무슨말인가?? 동일한 출처에서 가져온 리소스에 대해서만 허용하겠다는 보안 정책이다.

 

SOP

웹 사이트가 서로 공격하는 것을 방지하기 위해 생겨난 웹 브라우저단의 보안 메커니즘이다.
이용자가 웹 서비스에 접속할 때 브라우저는 서비스에서 사용하는 인증 정보 즉 쿠키를  HTTP 요청에 포함시켜 전달하게 되는데, 이는 접속에만 해당하는 것이 아닌 리소스를 통해 간접적으로 타 사이트에 접근할 때도 인증 정보인 쿠키를 함께 전송하는 특징이 있다. 이 특징을 악용하여, 페이지가 클라이언트의 권한을 이용해 대상 사이트에 HTTP 요청을 보내고, HTTP 응답 정보를 획득하는 악성코드 작성이 가능해진다.

SOP는 어떻게 작동하는가?

브라우저는 가져온 정보의  Origin을 프로토콜, 스킴, 포트, 호스트 별로 구별하게 된다.
Http://naver.com:80/aaa

1. Http -> 스킴(프로토콜)

2. naver.com -> 호스트

3. 80 -> 포트

http://naver.com/bbb True 경로가 다르지만 이는 Origin으로 인정해준다.
http://cafe.naver.com/a False 호스트가 달라 False
https://naver.com False 스킴(프로토콜)이 달라 False
http://naver.com:3306 False 포트번호가 달라 False

 

이와 같은 SOP는 외부 출처에서 불러온 데이터를 읽으려고 할 때 오류가 발생한다.
하지만 읽는 것을 제외한 데이터를 쓰는 것에 대한 것은 문제없이 동작한다.
<Img> <style> <script>등의 태그는 SOP의 영향을 받지 않는다.


이러한 SOP를 사용하게 되면, 브라우저간 데이터를 주고받을 때 상당한 불편함이 따르게 된다.
러한 부분을 해소시켜, SOP의 적용을 받지 않고 리소스를 공유할 방법이
(Cross Origin Resource Sharing, CORS) "교차 출처 리소스 공유"이다.

 

 

 

 

 

 

※ 내용이 이상하거나 문제가 있을 경우, 또는 설명에 부족한 내용이 있으시면 알려 주시면 감사합니다.