본문 바로가기

Network

[Network] Mitigation: Same Orgin Policy - 티스토리

 

 

 

 

 

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의 데이터를 불러온다.

 

 

 

 

 

출처


https://dreamhack.io/ 

 

해커들의 놀이터, Dreamhack

해킹과 보안에 대한 공부를 하고 싶은 학생, 안전한 코드를 작성하고 싶은 개발자, 보안 지식과 실력을 업그레이드 시키고 싶은 보안 전문가까지 함께 공부하고 연습하며 지식을 나누고 실력 향

dreamhack.io