>  기사  >  백엔드 개발  >  PHP는 임의의 IP 액세스를 설정

PHP는 임의의 IP 액세스를 설정

angryTom
angryTom앞으로
2019-10-15 14:29:023319검색

PHP는 임의의 IP 액세스를 설정

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

헤더 CLIENT-IPX-FORWARDED-FOR는 위조하려는 IP로 설정되며 서버는 우리가 지정한 IP를 가져옵니다.

추천 학습: PHP 비디오 튜토리얼

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

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

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

PHP가 임의 액세스를 구성하는 방법은 다음과 같습니다.

<?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는 임의의 IP 액세스를 설정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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