개요
Same-Origin Policy(SOP)는 2011년, 국제 인터넷 표준화 기구(IETF; Internet Engineering Task Force)에서 관리하는 기술 표준 문서 RFC(Request for Comments)-6454에 처음 제안된 웹 브라우저 보안 정책이다. HTTP Request를 전송 할 때 다른 Origin으로의 전송을 금지한다. 즉, 같은 Origin에서만 리소스를 공유할 수 있다는 규칙을 가진 정책이며, 이 정책을 적용하는 호스트는 CSRF(Cross-Site Request Forgery), XSS(Cross-Site Scripting)과 같은 공격으로부터 방어할 수 있다.
Origin
Origin(출처)이란 URL에서 프로토콜(http, https 등), 도메인, 포트번호를 모두 합쳐 노드를 식별하는 개념이다.
CORS(Cross Origin Resource Sharing)
하지만, 웹 기술이 발달하면서 서로 다른 Orign들의 데이터 교환이 필요한 상황이 빈번해졌고, SOP는 몇 가지 예외 상황에 대해서는 다른 Origin으로도 Request를 보낼 수 있게 허용하는 방향으로 개정되었다. <script> 태그로 Javascript를 실행하는 경우, 이미지를 렌더링 하는 경우, <link> 태그로 CSS 파일을 불러오는 경우, HTML 문서를 화면에 보여주는 경우엔 다른 Origin으로의 요청을 허용하였고, CORS 정책을 준수하는 HTTP Request의 경우에도 다른 Origin과의 리소스 공유를 허용한다. 즉, CORS(Cross Origin Resource Sharing)는 Same-Origin Policy를 완화시키는 정책이라고 볼 수 있다. CORS는 웹 브라우저의 보안정책이며, 브라우저는 서버로부터 받은 응답 헤더를 분석하여 CORS 정책을 준수하는 지 검사하며 SOP를 위반하거나 CORS 정책을 준수하지 않은 타 Origin으로부터의 응답은 차단한다.
SOP를 적용하지 않는 경우