soowanlog

CORS 본문

웹 보안/정책

CORS

개발자솬
웹 보안/정책

CORS

개발자솬 2024. 3. 14. 22:30
728x90
반응형
  • CORS란?

Cross-Origin Resource Sharing의 약자로 HTTP 헤더를 사용하여 Cross-Origin에 대한 접근 권한을 부여하는 정책입니다.

※ Cross-Origin

다음 중 한 가지라도 다른 경우
1. 프로토콜    2. 호스트    3. 포트 번호
  • CORS가 필요한 이유

CORS 없이 모든 곳에서 데이터를 요청할 수 있다면 특정 사이트를 모방한 사이트를 만들 수 있을 겁니다.

이러한 모방 사이트에서 사용자가 로그인하도록 만들고 로그인했던 세션을 탈취하여 악의적으로 정보를 추출하거나 다른 사람의 정보를 입력하는 등 공격을 할 수 있습니다.

이렇듯 데이터 요청에 대한 제약이 없다면 사용자의 정보 탈취 등의 공격에 취약해집니다.

  • CORS의 동작 방식

- Simple request인 경우

서버에 요청을 보낸 후 서버가 응답 헤더에 Access-Control-Allow-Origin과 같은 값을 보냅니다.

그 후 브라우저가 요청한 Origin과 응답 헤더의 Access-Control-Allow-Origin의 값을 비교하여 유효한 요청이라면 리소스를 응답합니다.

만약 유효하지 않은 요청이라면 브라우저에서 이를 막고 에러가 발생합니다.

※ Simple request

HTTP method가 GET, HEAD, POST 중 하나이면서
자동으로 설정되는 헤더는 제외하고 Accept, Accept-Language, Content-Language만 변경하면서
Content-Type이 application/x-www-form-urlencoded, multipart/form-data, text/plain 중 하나인 경우

 

- Preflight request인 경우

Simple request가 아닌 Cross-Origin 요청은 모두 Preflight request를 하게 됩니다.

실제 요청을 보내기 전에 요청을 보내는 것이 안전한지 확인하기 위해 먼저 OPTIONS 메서드를 사용하여 요청을 보냅니다. 이를 Preflight라고 하고 내용물은 없이 헤터만 전송합니다.

브라우저가 서버에서 응답한 헤더를 보고 유효한 요청인지 확인 후 유효한 요청이라면 원래 요청으로 보내려던 요청을 다시 요청하여 리소스를 응답받습니다.

만약 유효하지 않은 요청이라면 요청은 중단되고 에러가 발생합니다.

참    고    자    료

- CORS란 무엇인가? | 개발자 올라프

 

- CORS란 무엇인가? | hannut91.github.io

728x90
반응형

'웹 보안 > 정책' 카테고리의 다른 글

SOP  (0) 2024.03.14