웹 사이트 에서 사용자 IP 를 가 져 오 는 보안 방법 HTTPX_FORWARDED_FOR 검사

2953 단어 HTTP X FORWARDED FOR
안전 필터 후의 getIP 함수

  function getIP() {
 $realip = ''; //
 if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  $realip = $_SERVER['HTTP_X_FORWARDED_FOR'];
 } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
  $realip = $_SERVER['HTTP_CLIENT_IP'];
 } else {
  $realip = $_SERVER['REMOTE_ADDR'];
 }

 preg_match('/^((?:\d{1,3}\.){3}\d{1,3})/',$realip,$match);
 return $match?$match[0]:false;
}

상기 함 수 는 IP 판단 을 추가 하여 Ip 형식 데이터 로 시작 하고 첫 번 째 로 IP 형식 값 을 만족 시 킵 니 다.false 로 돌아 가지 않 았 다 면.이렇게 하면 형식 을 만족 시 키 는 IP 를 읽 고 데이터 의 IP 형식 을 검증 할 수 있다.
만약 내 가 인터넷 의 IP 를 읽 고 사용자 가 랜 에 들 어 온 IP 를 직접 걸 러 내야 한다.
저 희 는 일부 사이트 에서 불법 IP 주 소 를 자주 볼 수 있 습 니 다.사실은 일 부 는 IP 주소 형식 이 잘못 되 었 고 일 부 는 IP 주 소 를 읽 어서 인터넷 에서 IP 형식 을 허용 하지 않 을 수도 있 습 니 다.아래 의 이 함 수 는 IANA 사이트 규범 을 통 해 함 수 를 봉 인 했 습 니 다.IP 주 소 를 입력 하면 이 IP 가 인터넷 에서 응용 할 수 있 는 지 정확하게 알 수 있다.

// IP
function ipType2($ip) {
 $iplist = explode(".", $ip);

 if ($iplist[0] >= 224 && $iplist[0] <= 239)
  return ' ';
 if ($iplist[0] >= 240 && $iplist[0] <= 255)
  return ' ';

 if (preg_match('/^198\.51\.100/', $ip))
  return 'TEST-NET-2, ';
 if (preg_match('/^203\.0\.113/', $ip))
  return 'TEST-NET-3, ';

 if (preg_match('/^192\.(18|19)\./', $ip))
  return ' ';

 if (preg_match('/^192\.168/', $ip))
  return ' [ ]';

 if (preg_match('/^192\.88\.99/', $ip))
  return 'ipv6to4 ';
 if (preg_match('/^192\.0\.2\./', $ip))
  return 'TEST-NET-1, ';
 if (preg_match('/^192\.0\.0\./', $ip))
  return ' (IANA)';
 if (preg_match('/^192\.0\.0\./', $ip))
  return ' (IANA)';

 if ($iplist[0] == 172 && $iplist[1] <= 31 && $iplist[1] >= 16)
  return ' [ ]';

 if ($iplist[0] == 169 && $iplist[1] == 254)
  return ' ';
 if ($iplist[0] == 127)
  return ' ';
 if ($iplist[0] == 10)
  return ' [ ]';
 if ($iplist[0] == 0)
  return ' ( )';

 return 'InterNet ';
}

IP 주 소 를 입력 하면'InterNet 네트워크 주소'로 되 돌아 갑 니 다.그러면 이 IP 주 소 는 형식 이 정확 할 뿐만 아니 라 인터넷 에서 합 법 적 인 IP 주소 입 니 다.이 함 수 는 매우 복잡 하 다.사실은 많은 비 인터넷 사용 IP 주 소 를 배제 하 는 것 이다.우리 가 흔히 볼 수 있 는 192,127,10 의 시작 주 소 는 모두 익숙 해 졌 을 것 이다.그러나 실제로 많은 IP 주 소 는 보존 되 어 있 거나 사용 되 고 있다.인터넷 IP 로 사용 할 수 없습니다.상기 두 가지 함수 가 있 으 면 우 리 는 정확 한 형식의 IP 주 소 를 읽 을 수 있 을 뿐만 아니 라 인터넷 위의 IP 주소 도 읽 을 수 있 습 니 다.이상 은 업무 중 에 자주 사용 하 는 함수 입 니 다.여러분 의 교 류 를 환영 합 니 다!
저자:chengmo  QQ:8292669

좋은 웹페이지 즐겨찾기