본문 바로가기
Computer-Sience/Network

[Network] Cross-Origin Resource Sharing (CORS), Same-Origin Policy (SOP)

by dev_ss 2022. 12. 16.

1. SOP (Same-Origin Policy)

Cors를 이해하기 앞서 SOP라는 정책에 대하여 이해할 필요가 있다.

 

프로토콜, 호스트 및 포트가 같은 경우 URL은 동일한 출처를 가지고 있는 URL로 정의할 수 있다.


https://ssnotebook.tistory.com의 각 부분 예시

- 프로토콜 : https

- 호스트 : ssnotebook.tistory.com

- 포트 : 생략 (http://127.0.0.1:80이라는 주소에서 :80의 부분에 해당)


위의 기준으로 3가지 조건이 같지 않다면 다른 출처를 뜻하게 되는 것이며,

특정 출처를 가진 자원과 다른 출처를 가진 자원(문서 또는 스크립트)이 상호작용 하지 못하도록

요청 발생을 제한하는 정책이 SOP이다.

 

CSRF(Cross-Site Request Forgery)XSS(Cross-Site Scripting)의 공격을 예방하기 위한 보안상 이유로 기본적으로 채택하여 사용되는 정책이다.


2. CORS (Cross-Origin Resource Sharing)

앞선 SOP의 정책으로 인해 다른 출처를 가진 자원과 상호작용의 제한으로 생긴 것이 CORS이다.

 

인터넷에서는 웹페이지 상의 다른 출처를 가진 자원을 가져와서 사용하는 것은 흔한 일이며 필수적인 요소이다.

그렇기 때문에 일부 사항을 제외하고 특정 정책을 지키며 자원을 요청하였을 때 출처가 달라도 자원을 제공하는 것이 CORS이다.

즉, SOP 정책을 위반하여도 CORS 정책을 준수하면 타 출처의 자원상호작용을 할 수 있다는 것이다.


2-1. CORS 확인의 절차

1) Client에서 HTTP Request Header에 Origin를 담아서 요청

 

2) Server는 Response Header에 Access-Control-Allow-Origin을 담아서 Client에 응답

 

3) Client는 보냈던 요청의 Origin과 Server가 보내준 Access-Control-Allow-Origin을 비교

 - 비교 후 일치하면 Response를 사용하게 되고 불일치하면 CORS Error가 발생하여 Response를 버림

 

2-2. CORS 정책의 사용

CORS 정책을 지키기 위해서는 Server에서 별도의 허용할 출처를 설정해주는 것이 중요하다.

위 절차에서 볼 수 있듯이 Client가 요청한 Origin과 Server의 Access-Control-Allow-Origin의 비교를 함에 있어 Server에서 Access-Control-Allow-Origin을 설정해주면 CORS를 허용해 주는 것이다.

 

반응형