SOP(Same Origin Policy)
•
2011년 RFC 6454에서 등장한 보안 정책으로 "같은 출처에서만 리소스를 공유할 수 있다"라는 규칙을 가진 정책
Origin
•
출처
•
Protocol, Host, Port(:80, :443) 까지 전부 합친 것
◦
포트가 생략 가능한 이유는 HTTP, HTTPS 프로토콜의 기본 포트 번호가 정해져있기 때문
Same-Origin (동일 출처)
•
동일 출처의 판단 기준 : Scheme(프로토콜), Host(도메인), Port까지 동일한 것
Cross-Origin (다른 출처)
•
다른 출처
•
동일 출처의 반대. Scheme(프로토콜), Host(도메인), Port 중에 하나라도 다르면 Cross Origin
•
개발 중에는 SOP 정책을 따르지 못하는 다른 출처간의 상호작용을 해야하는 케이스가 존재
•
SOP의 불편함을 해소하고 보안을 지키기 위해 등장한 기술
•
교차 출처 리소스 공유 도메인이 다른 서버끼리 리소스를 주고 받을 때 보안을 위해 설정된 정책
•
웹 통신 제약
•
프로토콜, 도메인(호스트 이름), 포트가 전부 동일해야함, 아니면 에러 발생
사용하는 이유
•
클라이언트 어플리케이션, 특히나 웹에서 돌아가는 클라이언트 어플리케이션은 사용자의 공격에 너무나도 취약하다.
•
브라우저의 개발자 도구만 열어봐도 DOM, Network, App, Resource등의 각종 정보들을 제재없이 열람할 수 있다.
•
이럴 떄 통신 제약이 없다면 보안이 너무나도 취약해진다.
해결법
응답 헤더의 Access-Control-Allow-Origin에 접근을 허용할 출처를 반환하는 방법
•
서버에서 CORS 헤더 설정
•
프록시 서버 사용
•
API Route에서 CORS 설정