동일출처정책 (Same-Origin Policy)
쉽게 풀면
동일출처정책은 서로 다른 웹사이트가 함부로 서로의 정보를 들여다보지 못하게 막는 브라우저의 기본 규칙입니다. 은행 웹사이트를 열어둔 상태로 다른 사이트를 방문했을 때, 그 다른 사이트가 은행 페이지의 내용을 몰래 읽어가지 못하도록 막아주는 장치라고 생각하면 됩니다. 여기서 "출처"는 프로토콜, 도메인, 포트가 모두 같아야 동일한 것으로 인정됩니다. 이 정책이 없다면 사용자가 로그인한 다른 사이트의 정보를 악성 사이트가 자유롭게 훔쳐볼 수 있게 됩니다.
왜 중요한가
동일출처정책은 브라우저 보안 모델의 근간을 이루는 개념으로, 정보보안학 연구에서 크로스사이트 공격이나 정책 우회 취약점을 논할 때 반드시 함께 다뤄집니다. 이후 등장한 여러 웹 보안 메커니즘들은 이 정책을 보완하거나 특정 상황에서 예외를 허용하기 위해 설계되었습니다.
논문에서는 이렇게 쓰입니다
기본 보안 정책의 허점을 이용한 공격 사례를 다룬 연구입니다.
정책 적용 범위에 대한 실험적 검증을 다룬 연구 사례입니다.
조금 더 깊게 보면
동일출처정책은 문서 간 스크립트 접근, 쿠키 접근, 네트워크 요청 결과 열람 등 여러 영역에 걸쳐 적용되며, 완전히 동일한 경우에만 접근을 허용합니다. 서로 다른 출처 간에 데이터를 안전하게 주고받아야 하는 경우를 위해 교차출처리소스공유와 같은 별도의 완화 메커니즘이 마련되어 있습니다. 동일 출처 정책은 프로토콜, 호스트(도메인), 포트가 모두 일치하는 경우에만 같은 출처로 인정하는 브라우저의 보안 모델로, 이 중 하나라도 다르면 자바스크립트를 통한 다른 출처의 문서나 응답 읽기를 차단해 악성 사이트가 사용자가 로그인한 다른 사이트의 데이터를 임의로 읽어가는 것을 막습니다.
주의할 점
동일출처정책은 브라우저가 강제하는 클라이언트 측 보호 장치이므로, 서버 측 설정이 잘못되어 있으면 이 정책만으로 모든 공격을 막을 수는 없습니다. 동일 출처 정책은 다른 출처로의 요청 전송 자체를 막지는 않으며 응답을 읽는 것만 차단하기 때문에, CSRF(사이트 간 요청 위조) 같은 공격은 이 정책만으로는 방어되지 않아 별도의 토큰 기반 방어가 필요합니다.