CORS ( Cross-Origin Resource Sharing )
Cross Origin(교차 출처) 의 Resource (정보) 를 Sharing (공유)한다.
문자 그대로 번역해본 내용이다.
사실 '교차 출처' 라는 단어가 번역투라 우리말로 어떤 의미인지 잘 이해되지 않는다.
'교차 출처' (Cross Origin) 를 이해하기 위해 먼저,
'동일 출처' (Same Origin) 가 무엇인지에 대해 살펴보도록 하자.
SOP ( Same Origin Policy )
SOP 는 '동일 출처 정책' 으로, 2011년 11월 RFC6454 에서 등장한 보안 정책이며
'같은 출처의 리소스만 관리할 수 있게' 명시해둔 정책이다.
이는 '알 수 없는 출처' 에서의 접근을 막기 위한 정책이며,
이 정책 이전에 존재했던
보안 취약점을 통한 해킹들을 방지하기 위함이다.
SOP 가 확립되기 이전,
해커들은 특정 웹사이트를 이용하여 (위의 이미지 예시에선 www.evilwebsite.com)
그 웹사이트 내에서 (ex. iframe tag) 사용자가 금융 사이트에 접속하게 하여
정보를 탈취, 악용하는 수법의 바이러스(해킹 기법 or Tool)들을 사용하곤 했다.
SOP 의 적용 이후,
Same Origin 이 아닌 곳에서의 Resource Sharing 이 발생하게 될 때 ( == CORS )
브라우저가 이러한 접근을 차단하여 SOP 를 위반하였다는 경고 메시지를 출력해주고
'알 수 없는 출처' 에 대한 접근을 원천 차단하게 되었다.
참고 : CORS errors
이제 다시한번
Same Origin 과
Cross Origin 을 비교해 보자.
Cross-Origin (교차 출처) 의 의미가 이제 어느정도 이해가 되기 시작한다.
사실 Cross Origin 은
Same Origin 이 아닌 주소들을 의미하고
SOP의 정책에서 방지하고자 했던 '알 수 없는 출처' 의 정보 요청이다.
하지만 이 주소들이 '알 수 없는' 주소들이 아닌
'인증된', '내가 알고있는', '이 도메인과 밀접한 관련이 있는' 주소들이라면?
이러한 곳에서 오는 요청까지 SOP 의 정책으로 막힌다면
Web 이라는곳이 더이상 넓고 자유로운 정보의 바다가 되지 않을 수 있을 것이다..
(물론 자유엔 언제나 책임이 따른다)
그래서 브라우저는 Cross Origin 에서의 요청이 왔을 때
CORS 검증을 해야하는지 판단하는 절차를 거치게 되고
이를 preflight request 라고 한다.
참고 : CORS
참고 : MDN CORS
여러 인증 절차를 거치고
인증된 주소들을 서버에 미리 알려주어서
CORS error 를 방지하고
안전한 검증을 거쳐 개발하는
'검증하는 개발자' 가 되자! 😎
'Network > WEB BROWSER' 카테고리의 다른 글
[링크] 프론트엔드 개발자라면 알고 있어야 할 브라우저 작동과정 (0) | 2021.03.29 |
---|