개발/알아둘 기본 개념
CORS와 SOP란?
후누피
2023. 8. 19. 12:56
728x90
CORS란?
CORS(Cross-Origin Resource Sharing)는 출처가 다른 자원들을 공유한다는 뜻.
한 출처에 있는 자원에서 다른 출처에 있는 자원에 접근하도록 하는 개념이다.
CORS는 추가 HTTP 헤더를 사용하여 한 출처에서 실행 중인 웹 어플리케이션이
다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제이다.
웹 어플리케이션은 리소스가 자신의 출처(도메인,프로토콜 포트)와 다를 때 교차 출처 HTTP 요청을 실행한다.
출처란?
예를들어 ,
https://hunffy.github.io:123/abcd/svelte?page=4#orgin
protocol Host Port. Path Query Fragment
생략가능 String
위의 구성 요소 중에서 Protocol + Host + Port 3가지가 같으면 동일 출처(Origin)라고 합니다.
다른 출처 요청의 위험성은 무엇이 있을까?
img, script , frame , video , audio 등이 등장하며, 페이지 로딩 이후에 브라우저에서
하위 자원들을 가져올 수 있게 되었습니다. 결과적으로 동일 출처,
다른 출처 모두 호출이 가능하게 되었습니다.
예를들어,
홈페이지를 서핑 도중 <script>가 심어진 페이지를 열었다고 가정할 때
페이지를 열면서 <script>태그가 실행되고 script태그는
"Delete/account"를 요청하도록 설정되어 있다고 가정해봅니다.
지정된 delete/account를 통신하여 나의 계정이 삭제가 되버리는 사고가 발생할 수 있습니다.
따라서, 다른 출처의 접근을 막기 위해서 동일 출처 정책이 등장했습니다.
동일 출처 정책 ( SOP)
SOP(Same-Origin-Policy)
동일 출처 정책은 출처로부터 조회된 자원들의 읽기 접근을 막아 다른 출처 공격을 예방합니다.
하지만, 다르 출처에서 얻은 이미지를 담는 <img태그나 외부 주소를 담는 <link>태그와 같은 태그들은
허용해줍니다.
동일 출처 정책은 다른 출처 자원을 가져오는 것에 대해 제한적인 허용을 해줍니다.
또한 SPA(Single Page Application)와 미디어 중심 웹 사이트들이
늘어나고 있으므로관련 규칙들도 계속 추가되고 있습니다.
따라서, 다른 출처 리소스에 접근성을 높이기 위해서 CORS가 등장했습니다.
CORS란 무엇인가?
개요 웹 프로그래밍에서 프런트와 백엔드 작업을 하면, 한번씩 발생하는 문제가 CORS 문제입니다. 현재 하는 업무가 이런 경우는 없었지만, 개인 프로젝트 시 발생했던 문제를 기억하며 해당 문
escapefromcoding.tistory.com
728x90