본문 바로가기

[web] 동일 출처 정책과 CORS의 존재 이유

by Gnaseel 2020. 5. 28.
728x90
반응형

동일 출처 정책이란

 

동일 출처 정책(Same Origin Policy)은 어떤 출처에서 불러온 문서나 스크립트가 다른 출처에서 가져온 리소스와 상호작용 하는것을 제한하는 보안정책이다.

XmlHTTPRequest로 다른 서버에 접근할 때 발생하는데, 실제 사례에는 보통 Javascript를 통한 AJAX통신과정에서 보통 발생한다.

 

이 때 출처는 오리진이라는 개념으로 구분하는데, 쉽게 말하자면 

오리진 = 프로토콜 + 도메인 + 포트번호 라고 이해할 수 있다.

 

즉, 같은 프로토콜, 도메인, 포트번호를 가져야 클라이언트와 서버가 원활하게 통신할 수 있는 것이다.

 

동일 출처 정책이 왜 필요한가?

 

기본적으로 자바 스크립트는 자신이 실행된 문서의 서버의 내용만 읽을 수 있다.

만약 다른 서버의 내용까지 읽을 수 있게된다면, 사용자의 키보드 입력을 가로채는 스크립트를 다른 페이지에 심을 수도 있을 것이다. 보안상의 이슈로 자바스크립트 엔진 표준 스펙에는 동일 출처 정책이 포함되게 되었다.

 

 

하지만 우리는 타 오리진의 리소스가 필요하다....

 

하지만 사람들의 요구를 충족시키기 위해 웹은 더이상 자신들의 리소스만 보여주는 한계를 가질 수 없게 되었다.

양질의 서비스를 제공하기 위해서는 타 서버의 리소스가 필요한 상황이 언제나 오기 마련이다.

그래서 웹 브라우저에는 CORS라는 표준이 마련되었다.

 

CORS는 무엇인가?

 

CORS는 (Cross Origin Resource Sharing), 즉 교차 출처 자원 공유의 약자로 타 오리진을 가진 서버와 통신하기 위한 방식을 표준화한 스펙이다. 여기서 중요한 것은 Same Origin Policy가 JS의 표준인것과는 다르게 CORS는 웹 브라우저의 표준이라는 것이다. 웹 브라우저를 사용하지 않거나, CORS표준을 만족하지 못하는 허접한 브라우저를 사용한다면 아무런 의미가 없는 것이다.

 

일반적인 경우 OPTION 메소드를 사용해서 예비 요청을 전송하는 방식으로 진행된다.

해당 서버는 예비 요청의 CORS요청을 읽고, 어떻게 할지 결정한다.

여기서 서버가 OK 사인을 클라이언트에게 전송해주면, 클라이언트는 권한을 얻어 리소스를 다룰 수 있게되는 것이다.

 

 

반응형

댓글0