Lorsque nous demandons un site, l'en-tête http contiendra des informations IP. En falsifiant ces informations, nous pouvons créer l'effet de différentes demandes d'accès IP.
En-tête CLIENT-IP et X-FORWARDED-FOR sont définis sur l'adresse IP que nous voulons forger, et le serveur obtiendra l'adresse IP que nous avons spécifiée.
Apprentissage recommandé : Tutoriel vidéo PHP
X-Forwarded-For est un en-tête d'extension. Le protocole HTTP/1.1 (RFC 2616) ne le définit pas. Il a été introduit pour la première fois par Squid, un logiciel proxy de mise en cache, pour représenter la véritable adresse IP du demandeur HTTP. Il est désormais devenu un standard de facto et est utilisé par les principaux HTTP. proxys, les services de transfert tels que l'équilibrage de charge sont largement utilisés et sont écrits dans la norme RFC 7239 (Forwarded HTTP Extension).
Dans le cas d'une communication bipartite TCP/IP normale, l'adresse IP source ne peut pas être falsifiée. , c'est-à-dire qu'il est dit que dans le protocole TCP/IP, l'adresse IP source du paquet de données peut être falsifiée, mais cela empêchera le paquet de données envoyé de revenir, rendant la communication normale impossible. C'est comme lorsque nous écrivons une lettre à l'autre partie, si nous écrivons la mauvaise adresse de l'expéditeur et que le destinataire répond en fonction de l'adresse de l'expéditeur sur l'enveloppe, l'expéditeur d'origine ne pourra pas recevoir la réponse.
Certaines attaques DDoS, comme SYN Flood, profitent de cette faille de TCP/ip pour mettre en œuvre l'attaque.
Ce qui suit décrit comment PHP construit l'accès aléatoire.
<?php function curl($url,$ifpost = 0, $datafields = '', $cookiefile = '', $v = false){ $ip_long = array( array('607649792', '608174079'), //36.56.0.0-36.63.255.255 array('1038614528', '1039007743'), //61.232.0.0-61.237.255.255 array('1783627776', '1784676351'), //106.80.0.0-106.95.255.255 array('2035023872', '2035154943'), //121.76.0.0-121.77.255.255 array('2078801920', '2079064063'), //123.232.0.0-123.235.255.255 array('-1950089216', '-1948778497'), //139.196.0.0-139.215.255.255 array('-1425539072', '-1425014785'), //171.8.0.0-171.15.255.255 array('-1236271104', '-1235419137'), //182.80.0.0-182.92.255.255 array('-770113536', '-768606209'), //210.25.0.0-210.47.255.255 array('-569376768', '-564133889'), //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)",'CLIENT-IP:'.$ip,'X-FORWARDED-FOR:'.$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")); ?>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!