알고리즘 및 정보통신 이론/통신

x-forwarded-for 간단 개념 정리(XFF, 프록시, 헤더, 로드 밸런싱, 클라이언트 IP 보존, 웹)

개발자 DalBy 2024. 5. 14. 14:15
반응형

x-forwarded-for 간단 개념 정리(XFF, 프록시, 헤더, 로드 밸런싱)

 

XFF 헤더 X-Forwarded-For는 HTTP 프록시나 로드 밸런서를 통해 웹 서버에 연결하는 클라이언트의 원래 IP 주소를 식별하는 데 사용되는 표준 HTTP 헤더입니다. 이는 클라이언트의 IP 주소를 정확하게 결정해야 하는 시나리오, 특히 역방향 프록시, CDN(Content Delivery Network) 서비스 또는 로드 밸런서와 같은 여러 계층의 네트워크 인프라와 관련된 상황에서 일반적으로 사용됩니다.

  1. 프록시 및 로드 밸런서 : 많은 네트워크 설정, 특히 기업 또는 클라우드 환경에서 웹 서버는 프록시 서버 또는 로드 밸런서 뒤에 배치되는 경우가 많습니다. 이러한 중개 서버는 클라이언트로부터 요청을 받은 다음 이를 적절한 백엔드 서버로 전달합니다. 이러한 구성에서 웹 서버는 실제 클라이언트의 IP 주소가 아닌 프록시 또는 로드 밸런서의 IP 주소를 요청의 소스 IP 주소로 간주합니다.
  2. 클라이언트 IP 보존 : 원래의 클라이언트의 IP 주소를 보존하기 위해 프록시 또는 로드 밸런서는 X-Forwarded-For웹 서버로 전달하기 전에 HTTP 요청에 헤더를 추가합니다. 이 헤더에는 클라이언트의 원래 IP 주소가 포함되어 있어 웹 서버가 요청의 실제 소스를 식별할 수 있습니다.
  3. 헤더 형식 : X-Forwarded-For 헤더에는 일반적으로 쉼표로 구분된 IP 주소 목록이 포함됩니다. 목록의 가장 왼쪽 IP 주소는 원래 클라이언트의 IP 주소를 나타내고, 후속 IP 주소(있는 경우)는 요청을 전달한 중개 프록시 또는 로드 밸런서를 나타냅니다.
  4. 보안 고려 사항 : X-Forwarded-For클라이언트의 IP 주소에 대한 귀중한 정보를 제공하지만 액세스 제어 또는 로깅과 같이 보안에 민감한 작업에 사용할 때는 주의하는 것이 중요합니다. 헤더는 악의적인 클라이언트에 의해 쉽게 스푸핑되거나 조작될 수 있으므로 적절하게 검증하거나 삭제하지 않으면 잠재적인 보안 취약점이 발생할 수 있습니다.
  5. 웹 애플리케이션에서의 사용 : 웹 애플리케이션은 X-Forwarded-For 헤더에 액세스하여 원래 클라이언트의 IP 주소를 검색하고 이를 지리적 위치, 액세스 로깅, 속도 제한 또는 IP 기반 액세스 제어와 같은 다양한 목적으로 사용할 수 있습니다. 많은 웹 프레임워크와 웹 서버는 헤더 액세스 및 구문 분석을 위한 기본 지원을 제공합니다. X-Forwarded-For

 

 

요약하자면

x-forwarded-for XFF는 HTTP 헤더 구성 중 하나의 개체입니다. 웹 서버에 접속하는 Client의 원 IP를 식별합니다. 참고 사항으로 네이버 이메일 획인 시(SMTP) 헤더를 보면 client ip, x 시작하는 헤더가 있습니다. (client ip, proxy1, proxy2 여러 프록시들을 거치면, 각 프록시의 IP 주소들이 차례로 열거됩니다. )

 

ex) 메일 헤더 내용(알라x 책 구매 메일)

ARC-Seal: i=1; a=rsa-sha256; d=naver.com; s=arc-20180730; t=1710574776;
	cv=none; b=OLjPXT4bRglmA0hmm7HEM9KWO1SaUy3VMXk78MpOqb/s/b1XFqB5xV9iVRVm
	 4bgWOoQtIH/v9kVGIpKhxDpkkkQdyXWQxo6AVA0yYk++JwNsU665FoJ07r5yhq+Qfm3pQx
	 ANtON/cem24sAnvCuutz6uLl6B3eacPMszoFlUATQPfFwcWphtdKFe0xvFmp08vt0MeTKz
	 OD2K3smJFg4x+ACXhrOmHpFcPjKDBS95Ab/7NeqAsjQb9Qabhjh8euLwH55RkeL+Mtvjy8
	 IRXA8cHCpOdXZBHhPgKpMWgj+l+v9OdzzLZCqxnE1n0QcziNHdzCTDdQJnbHf2xIqCi0KE
	 CA==
ARC-Message-Signature: i=1; a=rsa-sha256; d=naver.com; s=arc-20180730;
	t=1710574776; c=relaxed/relaxed;
	bh=mrHzxhTHBE6/fhdWY0daM/HQnLd0l3PrdOZYMOrhT4M=;
	h=date:from:subject:to; b=UpzyyULa2ZE7Dmna/SOSnvBibh51swjI1LUv6vFvkFum9
	 CaEEPepJlH+UqViXXob+gMpzcYz6VA8gCOlo68wM/cJYua57zJRGEmUWU/vQE/3gV2uaAP
	 yo0xezKZK4Tw29WtVIEQ0T8uHAp1RPHOk7Fd0a83HFSagHSSCCE3fCaUG58R4+sH3ZkLDP
	 hBDlBu5usaRNT75eO/W9M5EGwDJ8HOROG1jBvgW6ZypCWmHZosQ09NYaPNKnLp1+KfFgzI
	 5+yrxAEIO104nnqcbjskCdaSF57MTB0pLd16AaI12tIp/zd9VGS7iWDzHuBBfP0eL2kq1s
	 IOR3Y8f38JsN4DChA==
ARC-Authentication-Results: i=1; mx.naver.com; 
  spf=pass (mx.naver.com: domain of return@aladin.co.kr designates 2xx.1xx.2xx.6x as permitted sender) smtp.mailfrom=return@aladin.co.kr
Return-Path: <return@aladin.co.kr>
Received-SPF: pass (mx.naver.com: domain of return@aladin.co.kr designates 2xx.1xx.2xx.6x as permitted sender)
  client-ip=2xx.1xx.2xx.6x; x-iptype=default;
Authentication-Results: mx.naver.com;
  spf=pass (mx.naver.com: domain of return@aladin.co.kr designates 2xx.1xx.2xx.6x as permitted sender) smtp.mailfrom=return@aladin.co.kr
X-Naver-ESV: wren+6J4p63qMBIYKBwdbXmmFqKlKqpYkXm=
X-Session-IP: 2xx.1xx.2xx.6x
Message-ID: <1710574776938.7f450.110329969@crcvmail101.nm>
Received: from mail3.aladin.co.kr (mail3.aladdin.co.kr [2xx.1xx.2xx.6x])
  by crcvmail101.nm.naver.com with ESMTP id YxEvtXk0TyqQWyziJaGZmQ
  for <xx@naver.com>;
  Sat, 16 Mar 2024 07:39:36 -0000
Date: Sat, 16 Mar 2024 16:39:36 +0900
From: "=?UTF-8?B?7JWM652865SYIOyduO2EsOuEt+yEnOygkA==?="<no-reply@aladin.co.kr>
Subject: =?UTF-8?B?6rCQ7IKs7ZWp64uI64ukLiDso7zsmKTsnKTri5jsnZgg7KO866y47J2EIOygkeyImO2VmA==?=
 =?UTF-8?B?7JiA7Iq164uI64ukLg==?=
To: "=?UTF-8?B?7KO87Jik7Jyk?="<xx@naver.com>
MIME-Version: 1.0
X-Mailer: ThunderMail6.0
Content-Type: multipart/alternative;	boundary="------=_ThunderMail_BOUNDARY_C123O456N789F"​

 

그렇다면 사용하는 이유는 무엇일까?

X-Forwarded-For: client-ip-address

ex) X-Forwarded-For: 2xx.xxx.xxx.x

 

HTTP 로드 밸런싱을 사용하여 여러 IP가 있다고 가정 한다면, 해당 클라이언트의 IP 주소를 식별 할 수 있습니다. 즉 클라이언트의 IP 주소를 보존하고, 웹 서버가 들어오는 요청 소스를 정확하게 식별하는 데 도움이 됩니다. 웹 애플리케이션에서 다양한 네트워킹 및 보안 관련 기능을 활성화 할 수 있습니다.

 



반응형

'알고리즘 및 정보통신 이론 > 통신' 카테고리의 다른 글

정보통신 개념과 원리  (0) 2024.05.14