> 백엔드 개발 > PHP 튜토리얼 > PHP에서 사용자의 정확한 IP 주소를 얻는 방법은 무엇입니까?

PHP에서 사용자의 정확한 IP 주소를 얻는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-17 00:47:25
원래의
177명이 탐색했습니다.

How to Get a User's Accurate IP Address in PHP?

PHP에서 사용자의 IP 주소를 정확하게 확인하는 방법

소개

사용자의 IP 주소 검색 PHP의 정확한 IP 주소는 IP 기반 위치정보, 사기에 의존하는 애플리케이션에 매우 중요합니다. 감지 또는 액세스 제어. 그러나 프록시, 로드 밸런서 및 기타 네트워크 구성의 사용으로 인해 올바른 IP 주소를 추출하는 것이 어려울 수 있습니다.

IP 주소 검색 모범 사례

오류가 없는 방법은 없으며, 가장 정확한 접근 방식에 대한 일반적인 합의가 있습니다. PHP:

$_SERVER 변수 사용

PHP는 잠재적으로 IP 주소를 포함할 수 있는 여러 $_SERVER 변수를 제공합니다. 정보:

  • HTTP_CLIENT_IP
  • HTTP_X_FORWARDED_FOR
  • HTTP_X_FORWARDED
  • HTTP_X_CL USER_CLIENT_IP
  • HTTP_FORWARDED_FOR
  • HTTP_FORWARDED
  • REMOTE_ADDR

검증 및 신뢰성

모든 $_SERVER 변수가 동일하게 신뢰할 수 있는 것은 아닙니다. HTTP_CLIENT_IP 및 REMOTE_ADDR은 가장 안정적인 반면 HTTP_X_FORWARDED_FOR은 쉽게 스푸핑될 수 있습니다.

정확한 IP 검색을 위해 최적화된 코드

다음은 다음을 고려한 최적화된 코드 조각입니다. 모든 관련 $_SERVER 변수:

function get_ip_address() {
    if (!empty($_SERVER['HTTP_CLIENT_IP']) && filter_var($_SERVER['HTTP_CLIENT_IP'], FILTER_VALIDATE_IP)) {
        return $_SERVER['HTTP_CLIENT_IP'];
    }

    if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $iplist = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
        foreach ($iplist as $ip) {
            if (filter_var(trim($ip), FILTER_VALIDATE_IP)) {
                return $ip;
            }
        }
    }

    return $_SERVER['REMOTE_ADDR'];
}
로그인 후 복사

REMOTE_ADDR 관련 자격

REMOTE_ADDR은 일반적으로 신뢰할 수 있지만 여전히 스푸핑에 취약합니다. 절대적인 IP 정확성이 필요한 애플리케이션의 경우 클라이언트 인증서 또는 IP 평판 데이터베이스 검사와 같은 보다 엄격한 검증 방법을 사용하는 것이 좋습니다.

추가 고려 사항

  • IP 범위 확인: FILTER_FLAG_NO_PRIV_RANGE와 함께 filter_var()를 사용하고 FILTER_FLAG_NO_RES_RANGE는 개인 및 예약된 IP 주소를 삭제합니다.
  • IPv6 주소 유효성 검사: IPv6 트래픽이 예상되는 경우 IPv6 주소도 처리하도록 유효성 검사 코드를 수정하세요.
  • 프록시 감지 고려: 프록시가 할 수 있는 것처럼 프록시 트래픽에 플래그를 지정하고 처리하기 위한 추가 조치를 구현합니다. IP 주소 검색을 왜곡합니다.

위 내용은 PHP에서 사용자의 정확한 IP 주소를 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿