이번 글에서는 CORS 정책에 대하나 기준을 사이트내부에 삽입하는 속성인 script 태그의 crossorigin 속성에 대하여 다루겠습니다.
# script crossorigin 속성
일반적인 script 태그는 표준 CORS를 통과하지 못했을 때 최소한의 정보만을 넘깁니다. crossorigin속성은 정적 미디어에 대해 별도의 도메인을 사용하는 사이트의 오류 기록을 허용하기 위해 사용하는 태그입니다.
- 정적 미디어 : 단일 형식의 정보처리(=일방적인 정보처리)를 하는 단일 형식의 정보 컨텐츠
여기서 말하는 CORS를 간단히 말하면 추가 HTTP 헤더를 사용하여, 한 출처에서 실행중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에게 알려주는 체제입니다.
- 여기서 출처란, 도메인으 뜻하며 CORS 정책은 다른 도메인에서 서버의 자원에 접근 시 접근을 차단시키는 정책입니다.
# CORS의 정의
CORS는 Cross-origin Resource Sharing의 약어로 시스템 수준에서 타 도메인 간의 자원 호출을 승인하거나 차단하는 것을 결정하는 법칙을 말합니다. 이러한 법칙이 필요한 이유는 다른 도메인에서의 자원을 호출하는 행위에 제한이 없을 경우에 발생할 수 있는 보안 및 지적재산권 침해 문제를 예방히기 위함입니다.
다른 도메인과의 자원 공유를 위한 정책이기 떼문에, CORS 정책에 부합한 접근에 대해서는 일시적으로 특정 HTTP 메서드와 도메인에 대해 자원의 공유를 허용합니다.. 하지만, 자바스크립트는 브라우저만이 해석 가능한 언어이기 때문에 브라우저에서의 다른 도메인의 스크립트 요청만 거부합니다. 즉, 같은 도매인에 브라우저의 요청이나 다른 도매인에 브라우저가 아닌 곳의 요청에는 CORS 정책이 적용되지 않습니다.
정확하게 말하자면 요청자체가 거부되는 것이 아니라 요청자체는 어느곳에서든 가능합니다. 서버는 요청에 대한 응답을 해주고 서버에서 어노테이션을 통해 자원 공유에 대한 허용을 해주게 되면 응답헤더에 그에 대한 정보가 들어가게 되고 CORS 정책에 따라 자원의 허용이 진행되는 것이다.
# crossorigin 태그 부재시 발생가능한 문제점
CORS 정책은 자바스크립트 요청을 처리하며 이 정책이 존재하지 않는다면 클라이언트가 CSRF 나 XSS 같은 공격을 시도해 DB에 직접 접근을 할 수 있게됩니다.
- CSRF(Cross Site REquest Forgery) : 피싱을 활용해서 사용자가 링크를 누르게 하고 주로 사용자 모르게 그 계정의 비밀번호를 바꾸는 공격 기법
- XSS(Cross-Site Scripting) : 악의적인 사용자가 공격하려는 사이트에 본인의 스크립트를 넣어 정보를 빼오는 공격 기법
여기까지 CORS 정책에 대하나 기준을 사이트내부에 삽입하는 속성인 script 태그의 crossorigin 속성에 대하여 다루었습니다.
댓글