SOP(Same Origin Policy)
SOP는 동일 출처 정책이란 뜻으로, XSS와 같은 클라이언트 사이드 공격이 발생하는 것을 방지하기 위한 정책이다.
만약 사용자가 악의적인 웹 페이지에 접근 했을 때 해당 페이지가 이용자의 SNS로 웹 서비스 요청을 보낸다면, 사용자의 쿠키 값을 그대로 악용이 가능하다. SOP 정책이 있다면 악의적인 웹 페이지가 그러한 요청을 보내더라도 응답을 받을 수 없게 된다.
따라서 클라이언트 사이드 공격은 SOP를 우회하기 위함이라고도 한다.
SOP의 동일 출처 구분
SOP는 브라우저가 가져온 오리진을 다음과 같은 기준으로 구분한다.
1. 프로토콜
2. 포트
3. 호스트
https://same-orgin.com/ 이라는 오리진들을 아래의 오리진들과 비교했을 때 결과는 다음과 같다.
SOP 실습
(JavaScript를 이용해 https://dreamhack.io 에서 SOP 실습)
👆 위 사진을 보면 https://dreamhack.io/lecture의 창을 열고 해당 Origin(Same-Origin)에 대한 정보를 읽어올 때는 문제 없이 읽어온다.
👆 위 사진의 경우에는 https://theori.io 라는 Origin(Cross-Origin)에 대한 정보를 읽어오니 오류가 발생했다.
즉, SOP 정책이 적용되어 있는 것을 알 수 있다.
(SOP의 경우 데이터를 읽어오는 것은 불가능하지만 Cross-Origin에 데이터를 쓰는 것은 가능하다.)
CORS (Cross Origin Resource Sharing)
교차 출처 리소스 정책은 HTTP 헤더에 기반하여 Cross-Origin 간에 리소스를 공유하는 방식이다. 발신측에서 HTTP 요청을 보낼 때 CORS 헤더를 설정해 보내면 수신측에서 정해진 규칙에 맞게 데이터를 가져갈 수 있도록 설정한다.
위 사진은 드림핵 강의에서 사용된 예시이다.
JSONP (Json with Padding)
SOP는 외부 출처에대한 접근을 허용해 주는 경우가 있다.
예를들어 이미지나 자바스크립트, CSS 등의 리소스를 불러오는 <img>, <style>, <script> 등의 태그는 SOP의 영향을 받지 않는다.
JSONP는 이러한 특징을 이용하여 <script>로 Cross-Origin의 데이터를 불러온다.
출처
'Network' 카테고리의 다른 글
[Network] 포트 포워딩과 DMZ 설정 (0) | 2024.01.29 |
---|---|
[Network] TCP/IP 4계층이란? / TCP 연결 (2) | 2024.01.13 |
[Network] OSI 7계층이란? (0) | 2024.01.13 |
[Network] Cookie / Session이란 무엇인가? - 티스토리 (0) | 2024.01.09 |
[Network] HTTP / HTTPS란 무엇인가? - 티스토리 (2) | 2024.01.09 |