개발자 기술면접 꼬리물기 질문
  • Welcome
  • 01 Java
    • 01-01. Generic
    • Garbage Collection
    • 자료형과 객체 비교
    • 힙(Heap)과 메모리(Memory)
    • JDK 버전과 JRE
    • 스레드(Thread)
    • 예외(Throwable)
    • Call By Value와 Call By Reference
    • String, equals, StringBuffer
    • Thread와 비동기
  • 02 Spring
    • 02-01. Spring 동작 방식
    • @Autowired, @RequiredArgsConstructor
    • 인증(Authentication)과 인가(Authorization)
    • 트랜잭션(Transaction)
    • QueryDSL과 SQL Injection
    • SecurityContextHolder
    • @EqualsAndHashCode
  • 알고리즘과 자료구조
    • Set 자료구조
    • 정렬 알고리즘
    • 우선순위 큐 (Priority Queue)
    • DFS와 BFS
    • 힙(Heap) 자료구조
    • 스택(Stack)과 큐(Queue)
    • 암호화 알고리즘
    • LinkedList
    • 자료구조 - 해시 테이블(HashTable)
    • 자료구조 - ConcurrentHashMap
  • 데이터베이스
    • 기본
    • 인덱스 (Index)
    • 정규화 (Normalization)
    • 파티셔닝과 샤딩(Partitioning & Sharding)
    • 트랜잭션(Transaction)과 락(Lock)
    • 덤프(Dump)
    • Redis
    • 격리 수준(MySQL)
  • 네트워크
    • 전송 계층 (Transport Layer)
    • 네트워크 계층 (Network Layer)
    • Http와 Https
    • IP(Internet Protocol)
    • 프록시 서버
    • Http Protocol
    • 소켓(Socket)
    • 로드 밸런싱(Load Balancing)
  • 디자인 패턴
    • 전략 패턴 (Strategy Pattern)
    • 싱글톤 패턴 (Singleton Pattern)
    • 템플릿 메서드 패턴과 전략 패턴
    • 데코레이터 패턴 (Decorator pattern)
  • 웹
    • CORS 정책
    • 동시성 제어
    • N+1 문제
    • 웹 브라우저 동작원리
    • URI, URL, URN
    • 채팅 아키텍처 설계
  • 개발자
    • 개발 방법론 TDD
  • 운영체제
    • JIT & AOT 컴파일
    • 컨텍스트 스위칭(Context Switching)
    • 프로세스와 스레드
    • 싱글 스레드와 멀티 스레드
  • 코딩테스트
    • Stack / Queue (스택 / 큐)
    • Heap(우선 순위 큐)
    • DP(동적 계획법)
    • DFS(깊이 우선 탐색)
    • BFS(너비 우선 탐색)
    • Greedy(그리디 알고리즘)
    • 해시(Hash)
    • 투 포인터 알고리즘
    • Shortest path
    • 수학적 사고
Powered by GitBook
On this page
  • Q. CORS 정책이란 무엇인가요?
  • Q. 그렇다면 비슷한 용어인 SOP는 무엇인가요?
  • Q. CORS의 작동 방식에 대해서 설명해주세요.
  1. 웹

CORS 정책

Q. CORS 정책이란 무엇인가요?

A. CORS 정책이란 교차 출처 리소스 공유인 Cross-Origin Resource Sharing의 약자로, 다른 출처에서 리소스를 요청할 때 이를 허용하거나 제한하는 보안 장치입니다. 브라우저는 기본적으로 동일 출처(같은 도메인, 프로토콜, 포트)에서만 데이터를 주고받게끔 되어 있습니다. 만약 다른 출처에서 데이터를 요청하려고 하면, 보안 때문에 그걸 막습니다. 그런데 CORS를 설정하면, 서버에서 "이 특정 도메인은 접근을 허용해도 돼"라고 명시할 수 있게 됩니다.

서버가 클라이언트에 Access-Control-Allow-Origin이라는 헤더를 보내서 허용할 도메인을 지정하는 방식입니다. 이렇게 하면, 브라우저는 그 헤더를 보고 교차 출처 요청을 허용할지 판단합니다.


Q. 그렇다면 비슷한 용어인 SOP는 무엇인가요?

SOP는 Same-Origin Policy의 약자로, 동일 출처 정책을 의미합니다. 웹 브라우저에서 보안을 위해 기본적으로 사용하는 정책으로 같은 출처(Origin)에서만 자원을 주고받도록 제한하는 규칙이에요.

출처라는 건 프로토콜, 도메인, 포트가 모두 동일한 경우를 말합니다. 예를 들어, https://example.com:443와 https://example.com:80는 포트가 다르기 때문에 다른 출처로 간주됩니다.

SOP가 중요한 이유는, 이를 통해 다른 출처의 악의적인 코드가 사용자의 데이터를 훔쳐가는 것을 방지하기 때문입니다. 예를 들어, 브라우저가 악성 스크립트가 포함된 외부 사이트에서 사용자의 쿠키나 데이터를 가져가는 걸 막아줍니다.

정리하자면, SOP는 기본적인 보안 정책으로 같은 출처에서만 자원 교환을 허용하는 거고, CORS는 이 규칙을 완화해서 특정 조건에서 다른 출처의 요청도 허용할 수 있게 하는 방식이라고 할 수 있습니다.


Q. CORS의 작동 방식에 대해서 설명해주세요.

브라우저에서 웹 페이지가 다른 도메인의 리소스를 요청할 때, HTTP 요청 헤더에 Origin 정보가 포함됩니다. 여기서 Origin은 요청을 보낸 페이지의 출처를 나타냅니다. 서버는 Origin 정보를 확인하고 해당 Origin에서의 요청을 허용할지 거부할지 결정합니다. 이를 위해 서버는 응답 헤더에 Access-Control-Allow-Origin을 포함하여 허용할 출처를 명시합니다. 허용하는 출처는 *를 사용하여 모든 출처를 허용하거나 특정 출처를 명시적으로 지정할 수 있습니다. 브라우저는 서버의 응답을 확인하고, 만약 허용된 출처와 일치한다면 응답을 처리하고 자바스크립트로 데이터를 활용할 수 있습니다. 그렇지 않다면 브라우저는 CORS 에러를 발생시키고 자바스크립트에서 해당 응답을 접근할 수 없게 됩니다.

Previous데코레이터 패턴 (Decorator pattern)Next동시성 제어

Last updated 7 months ago