[Computer Network] SOP & CORS


📝 Same-Origin Policy

  • Same-Origin Policy은 자바스크립트 엔진 표준 스펙에 존재하는 보안 규칙이다.
  • SOP는 브라우저가 어떤 사이트에 접속중일 때 스크립트내(<script></script>)에서 초기화 되는 다른 도메인에 대한 HTTP 요청을 제한한다.
  • 예를들어 네이버에 접속하고 있는데 스크립트 코드에 다음으로 보내는 HTTP 요청이 있다면, SOP에의해 제한 당한다.
  • 왜 특정 도메인에 접속중일 때 다른 도메인으로의 접근을 막는걸까?
  • SOP는 보안 규칙이라고 했다. XXS 기법처럼 의도치 않은 스크립트를 사용해서 특정 정보를 다른 도메인으로 탈취하는 것을 막을 수 있다.


📝 CORS (Cross Origin Resource Sharing)

img

  • CORS는 현재 접속한 도메인 말고 다른 도메인에 접근할 수 있도록 처리 해주는 웹 브라우저 표준 기술이다. (위에서 살펴봤듯이 원래는 SOP 때문에 안된다.)
  • 예를들어 프론트와 백 엔드가 분리되어있고, 프론트 엔드쪽에서 백 엔드의 API를 호출하여 동작하는 웹 서비스를 생각해보자.
  • 만약 프론트 엔드와 백 엔드가 도메인이 다르다면 SOP 정책에의해 프론트 엔드는 백 엔드의 API를 호출할 수 없을 것이다. 이 경우 CORS를 사용해서 해결할 수 있다.
  • 백 엔드 단에서 CORS 설정을 해주면 된다. (응답 HTTP 헤더에 Access-Control-Allow-Origin을 추가한다.



🔎 참고