>  기사  >  백엔드 개발  >  PHP에서 임의의 IP 액세스를 구성하는 방법

PHP에서 임의의 IP 액세스를 구성하는 방법

王林
王林앞으로
2020-01-31 21:21:402231검색

PHP에서 임의의 IP 액세스를 구성하는 방법

우리는 사이트를 요청할 때 http 헤더가 일부 IP 정보를 전달한다는 것을 알고 있습니다. 이 정보를 위조하면 다양한 IP 액세스 요청 효과를 만들 수 있습니다.

해더의 CLIENT-IP 및 X-FORWARDED-FOR 헤더를 우리가 위조하려는 IP로 설정하면 서버는 우리가 지정한 IP를 얻게 됩니다.

X-Forwarded-For는 확장 헤더입니다. HTTP/1.1(RFC 2616) 프로토콜은 이를 정의하지 않습니다. 이는 HTTP 요청자의 실제 IP를 나타내기 위해 캐싱 프록시 소프트웨어인 Squid에 의해 처음 도입되었으며 이제는 사실상의 표준이 되었으며 주요 HTTP에서 사용됩니다. 프록시, 로드 밸런싱과 같은 전달 서비스는 널리 사용되며 RFC 7239(Forwarded HTTP Extension) 표준으로 작성됩니다.

(관련 학습 영상 공유: php 영상 튜토리얼)

일반적인 TCP/IP Two-Party 통신의 경우 소스 IP를 위조하는 것은 불가능합니다. 즉, TCP/IP 프로토콜에서는 데이터를 위조하는 것이 불가능합니다. 패킷은 소스 IP를 위조할 수 있지만, 이렇게 하면 전송된 데이터 패킷이 반환되지 않아 정상적인 통신이 불가능해집니다. 이는 마치 우리가 상대방에게 편지를 쓸 때 보내는 사람의 주소를 잘못 기재했는데, 받는 사람이 봉투에 적힌 보낸 사람의 주소대로 답장을 하면 원래 보낸 사람은 답장을 받을 수 없는 것과 같습니다.

SYN 플러드와 같은 일부 DDoS 공격은 TCP/ip의 이 결함을 이용하여 공격을 수행합니다.

php는 임의의 IP 액세스를 구성합니다 예:

<?php
function curl($url,$ifpost = 0, $datafields = &#39;&#39;, $cookiefile = &#39;&#39;, $v = false){
$ip_long = array(
            array(&#39;607649792&#39;, &#39;608174079&#39;), //36.56.0.0-36.63.255.255
            array(&#39;1038614528&#39;, &#39;1039007743&#39;), //61.232.0.0-61.237.255.255
            array(&#39;1783627776&#39;, &#39;1784676351&#39;), //106.80.0.0-106.95.255.255
            array(&#39;2035023872&#39;, &#39;2035154943&#39;), //121.76.0.0-121.77.255.255
            array(&#39;2078801920&#39;, &#39;2079064063&#39;), //123.232.0.0-123.235.255.255
            array(&#39;-1950089216&#39;, &#39;-1948778497&#39;), //139.196.0.0-139.215.255.255
            array(&#39;-1425539072&#39;, &#39;-1425014785&#39;), //171.8.0.0-171.15.255.255
            array(&#39;-1236271104&#39;, &#39;-1235419137&#39;), //182.80.0.0-182.92.255.255
            array(&#39;-770113536&#39;, &#39;-768606209&#39;), //210.25.0.0-210.47.255.255
            array(&#39;-569376768&#39;, &#39;-564133889&#39;), //222.16.0.0-222.95.255.255
    );
    $rand_key = mt_rand(0, 9);
    $ip= long2ip(mt_rand($ip_long[$rand_key][0], $ip_long[$rand_key][1]));
$header = array("Connection: Keep-Alive","Accept: text/html, application/xhtml+xml, */*", "Pragma: no-cache", "Accept-Language: zh-Hans-CN,zh-Hans;q=0.8,en-US;q=0.5,en;q=0.3","User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)",&#39;CLIENT-IP:&#39;.$ip,&#39;X-FORWARDED-FOR:&#39;.$ip); 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, $v); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
$ifpost && curl_setopt($ch, CURLOPT_POST, $ifpost); 
$ifpost && curl_setopt($ch, CURLOPT_POSTFIELDS, $datafields); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
$cookiefile && curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile); 
$cookiefile && curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile); 
curl_setopt($ch,CURLOPT_TIMEOUT,30); //允许执行的最长秒数
$ok = curl_exec($ch); 
curl_close($ch); 
unset($ch);
return $ok;
}
print_r(curl("URL"));
?>

추천 관련 기사 및 튜토리얼: php tutorial

위 내용은 PHP에서 임의의 IP 액세스를 구성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제