😀 Jerry/면접 질문

[1분 면접] CORS란 ?

Jerry_K 2025. 2. 25. 17:53

📌 면접 답변

CORS (Cross Origin Resource Sharing)를 설정한다는 것은 출처가 다른 서버간의 리소스를 공유하는 것을 허용하는 것이다.

출처(Origin) = 프로토콜(http) + 도메인(example.com) + port(80)

 

 

과거에 CSRF(Croess-Site Request Forgery, 크로스 사이트 요청 위조) 문제가 있었다.

CSRF는 사용자가 의도하지 않는 요청을 공격자가 만든 웹 애플리케이션을 통해 보내게 만드는 공격이다. 

좀 더 자세히 이해하기 위해 아래의 공격 방식을 살펴보자.

 

 

CSRF 공격 방식

1. 사용자가 A 사이트 (은행 웹사이트)에 로그인

  • 로그인하면 세션 쿠키가 브라우저에 저장
  • 이후 사용자는 A 사이트에서 로그아웃하지 않은 상태로 다른 사이트 방문

2. 공격자가 악의적은 B 사이트를 만들어 사용자를 방문하게 유도

  • 이메일, 메신저, 광고 등을 이용해 B 사이트로 접속 유도 
  • 사용자가 클릭만 해도 됨

3. 사용자가 B 사이트에 방문하면 자동으로 A 사이트로 요청 보냄

<img src="https://bank.com/transfer?to=attacker&amount=10000" style="display:none;">
  • 이런 HTML들이 숨겨져 있음
  • 사용자가 B 사이트에 방문하는 순간, 브라우저가 자동으로 A 사이트로 요청을 보냄
  • A 사이트는 사용자의 세션 쿠키를 포함하므로, 정상적인 요청으로 오인 함

4. 결과적으로 사용자 모르게 공격자의 계좌도 돈 송금 

 

 

이런식의 CSRF를 예방하기 위해 SOP(same -origin policy, 동일 출처 정책)을 구현했지만, 

구현된 브라우저는 다른 리소스 공유를 완전히 제한하는 문제점이 있다. 

현대 웹 애플리케이션에서는 다른 출처의 리소스를 사용하는 경우가 많아 CORS가 필요한 것이다.

 

 

CORS 작동 방식

1. Simple Request 

  • 브라우저가 사전 요청 없이 바로 서버에 요청을 보냄
  • 브라우저는 요청 메시지에 Origin 헤더응답 메시지의 Access-Control-Allow-Origin 헤더비교하여 CORS 위반 확인
  • Origin에는 클라이언트의 출처 (프로토콜, 도메인, 포트)가 작성
  • Access-Control-Allow-Origin에는 리소스 요청을 허용하는 출처가 작성
  • 요청 매서드가 GET, POST, HEAD 중 하나 일때 사용
  • 커스텀 헤더가 없음

 

2. Preflight Reques

  • 브라우저가 본 요청을 보내기 이전 OPTIONS 매서드로 요청을 보내 실제 요청이 안정한지 확인 
  • PUT, DELETE, PATCH 같은 특수한 HTTP 매서드 사용
  • 커스텀 헤더 포함 

 


📌 내 답변

CORS 정책은 허용되지 않은 URL이 서버에 자원을 요청할 때 원천 차단하는 정책이다. 

정책으로 서버의 들어오는 공격을 막을 수 있다.

 


📌 답변 보충

CORS 정책은 웹 브라우저에서 보안상의 이유로 다른 출처에서 요청하는 것을 제한하는 정책이다.

서버에서는 적절한 CORS 설정으로 특정 출처에서의 요청을 허락할 수 있다. 

 

CORS 정책에 대해 잘 못 알고 있었다 ...

전에 프로젝트에서 CORS를 설정했는데, 나는 서버에서 제한하는 줄 알았다... 

 

CORS가 왜 필요한지에 대해 알면 더 이해하기 쉽다.

 


https://www.maeil-mail.kr/

 

매일메일 - 기술 면접 질문 구독 서비스

기술 면접 질문을 매일매일 메일로 보내드릴게요!

www.maeil-mail.kr

매일 메일의 면접 질문 정리