📌 면접 답변
포워드 프록시 (Forward Proxy)
- 네트워크 사용자 보호 또는 접근 제어에 사용
- 주로 클라이언트 측에 위치하여, 사용자가 인터넷 접근할 때 중개자 역할
- 핵심 기능은 익명성 제공, 캐싱, 보안 강화(불법 콘텐츠 접근 차단)
예시로 회사 내부 네트워크에서 직원이 외부 웹사이트 접속하려 할 때, 포워드 프록시 서버를 통해 전달
→ 여기에서 사용자의 실제 IP 주소는 숨겨지고, 프록시 서버의 IP 주소가 대신 사용
리버스 프록시 (Reverse Proxy
- 서버 보호 및 로드 밸런싱 수행에 사용
- 서버 측에 위치하여 외부에서 들어오는 클라이언트 요청을 내부 서버로 전달하는 역할
- 핵심 기능은 로드 밸렁싱으로 서버 트래픽 분산 및 고가용성 유지
- 외부에서 직접 백엔드 서버에 접근하지 못하게 함
- DDOS 공격이나 해킹 시도로부터 서버 보호
- SSL/TSL 암호화를 리버스 프록시에서 처리하여 백엔드 서버 부담을 줄이고, 중앙에서 인증서 관리 가능
- 내부의 서버들이 각각의 SSL 인증서를 관리하지 않아도 됨
- 정적 콘텐츠 캐싱하여 응답속도 향상
📌 나의 답변
프록시는 클라이언트와 서버 통신에서 중계 다리 역할을 한다.
클라이언트에서 서버로 보내는 과정에 있는 프록시를 포워드프록시
서버에서 클라이언트로 보내낸 과정에 있는 프록시를 리버스 프록시라고 한다.
프록시로 인해, 클라이언트의 보안을 강화시킬 수 있다.
📌 내용 보충
이전에 CORS 정책에 대해 면접 포스팅을 한 적이 있었는데,
프록시로도 CORS 문제를 우회할 수 있다.
웹 애플리케이션이 직접적으로 리소스에 요청하는 대신 , 프록시 서버에 요청을 보낸다.
그리고 프록시 서버가 요청을 전달하고 응답을 보낸다.
이렇게 할 경우 프록시에서 요청이 보내진 것처럼 보인다.
브라우저는 클라이언트의 요청과 요청받은 응답을 비교하고 문제없이 CORS 에러를 피할 수 있다.
이렇게 프록시를 사용하면 클라이언트는 하나의 출처(Origin)에서
API 요청하는 것처럼 보이기 때문에 CORS 설정을 간소화 할 수있다.
만일 이렇게 하지 않을 경우 API 마다 Access-Control-Allow-Oring을 개별 관리해야해서 복잡해진다.
그러면 여기서 또 다시 CSRF 의 문제가 발생 할 수도 있다...
CORS의 본 목적은 허용되지 않는 다른 출처의 요청을 제한하는 것 인데,
공격자도 프록시에 요청을 보내면 자신의 출처를 숨길 수 있다.
이럴경우, 아래와 같은 방법으로 어느정도 CSRF 공격을 막을 수 있다.
CSRF 토큰을 생성하여 클라이언트에게 전달하거나,
쿠키 설정을 통해 SameSite 옵션 (같은 도메인)에서만 전송되도록 제한을 하거나.,
Origin 또는 Referer 헤더를 확인하여 신뢰할 수 있는 출처인지 검증하거나,
Content-Type에서 application/json 등을 요청하면 CSRF 공격이 어려워진다.
CORS(교차 출처 리소스 공유) | 토스페이먼츠 개발자센터
CORS를 번역하면 “교차 출처 리소스 공유”에요. ‘두 출처가 서로 다르다’는 뜻인데요. CORS를 설정한다는 건 ‘출처가 다른 서버 간의 리소스 공유’를 허용한다는 거죠.
docs.tosspayments.com
CORS와 프록시 관련해서는 토스에서 만든 자료가 좋으니 참고하자 !
매일메일 - 기술 면접 질문 구독 서비스
기술 면접 질문을 매일매일 메일로 보내드릴게요!
www.maeil-mail.kr
매일 메일의 면접 질문 정리
'😀 Jerry > 면접 질문' 카테고리의 다른 글
[1분 면접] (Connection, Socket, Read) Timeout 차이점 (0) | 2025.02.28 |
---|---|
[1분 면접] 얕은 복사와 깊은 복사의 차이 (0) | 2025.02.27 |
[1분 면접] CORS란 ? (1) | 2025.02.25 |
[1분 면접] MySQL InnoDB에서 갭락과 넥스트 키 락이 무엇이고, 어떻게 팬텀 리드를 방지하나요? (0) | 2025.02.24 |
[1분 면접] 동기와 비동기의 차이점 (0) | 2025.02.23 |