2016-06-22 4 views
0

내 다른 두 서버에 프록시 서버를 찾기 위해 동일한 코드를 넣었지만 내 서버 중 하나가 프록시 서버임을 보여줍니다. 마지막으로 모든 서버 변수를 인쇄하고 있습니다. HTTP 헤더에 HTTP_X_FORWARDED_FOR이 (가) 있습니다. 왜 이런 일이 일어나는가? 내가 찾는 데 사용내 서버에 HTTP_X_FORWARDED_FOR이 일부 IP 주소를 표시하는 이유

코드가

<?php 

경우 ($ _SERVER [ 'HTTP_X_FORWARDED_FOR'] || $ _SERVER [ 'HTTP_X_FORWARDED'] || $ _SERVER [ 'HTTP_FORWARDED_FOR'] || $ _SERVER [ ' HTTP_CLIENT_IP '] || $ _SERVER ['HTTP_VIA '] || in_array ($ _ SERVER ['REMOTE_PORT '], array (80808065888000,3128,553,554)) || @fsockopen ($ _ SERVER ['REMOTE_ADDR ' , 80, $ errno는, $의 errstr을, 2))

{

echo "Proxy detected"; 
    //Proxy detected' 
} 

else 
{ 
    echo "Proxy not detected"; 
    //No Proxy detected 
} 

? >

답변

0

일반적으로 X-Forwarded-For는 여러 가지 이유로 삽입됩니다.

  1. 서버가 리버스 프록시 뒤에있는 경우 그 리버스 프록시가 백 엔드 서버에 원래 클라이언트의 IP를 식별하기 위해 X-전달-를 들어 삽입하는 것은이 일반적입니다.

  2. 클라이언트가 회사 프록시 (공용) 뒤에있는 경우 해당 프록시는 여러 가지 이유로 X-Forwarded-For를 삽입 할 수 있습니다. 일반적으로 내부 IP 주소가 유출되기 때문에 일반적으로 싫은 일이지만 사이트에서 체인 프록시가 여러 개 사용되는 경우 일반적으로 발생합니다.

  3. 클라이언트가 인터넷에서 호스팅되는 공개 프록시 뒤에 있으면 프록시가 헤더를 삽입 할 수 있습니다.

프록시에는 Via 헤더도 추가해야하지만 일반적으로 프록시는 포함하지 않습니다.

+0

일부 클라이언트는 X-Forwarded-For에 역방향 프록시의 IP (예 : 연결된 IP)를 추가하여 일부 역방향 프록시 제한을 우회하려고 시도하는 것을 보았습니다. 아마도 백엔드에 상승 된 권한을 부여하려고 시도했을 것입니다. 올바르게 구성된 역방향 프록시는 클라이언트가 제공 한 XFF 헤더를 제거하기 전에 항상 클라이언트가 제공 한 XFF 헤더를 제거해야합니다. – Adrien