What are the three ways to forge referer addresses in PHP?

青灯夜游
Release: 2023-03-12 18:02:02
Original
2351 people have browsed it

Method: 1. Use the "file_get_contents($url,false,$context)" function; 2. CURL method, use curl_init(), curl_setopt(), curl_exec() and other functions; 3. Use fsockopen( )function.

What are the three ways to forge referer addresses in PHP?

The operating environment of this tutorial: windows7 system, PHP7.1 version, DELL G3 computer

php gets the URL address of the previous page of the current page , that is, which page the current page is linked from, you can use $_SERVER['HTTP_REFERER'];

But $_SERVER['HTTP_REFERER'] can also be forged and deceived. There are three ways to forge and deceive. $_SERVER['HTTP_REFERER']

Note: The window platform uses the phpstudy integrated environment nginx. This method is invalid, apache is normal, and other platform versions have not been tested

The first method: file_get_contents

$url = "http://localhost/test/test.php";
$refer="http://www.aa.com";
$opt=array('http'=>array('header'=>"Referer: $refer"));
$context=stream_context_create($opt);
$file_contents = file_get_contents($url,false, $context);
echo $file_contents;
Copy after login

stream_context_create in file_get_contents forges important parameters of the source.

Second method: CURL

$url = "http://localhost/test/test.php"; // 请求的页面地址
$refer="http://www.aa.com";  //伪造的页面地址
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL,$url);
curl_setopt ($ch, CURLOPT_REFERER,$refer);
curl_exec ($ch);
curl_close ($ch);
Copy after login

Third method: fsockopen

$url="http://localhost/test/test.php";
$target = "http://www.manongjc.com/";
/** sockopen 伪造 网站来源地址
 * @parem $url 要访问的页面地址
 * @parem $target 伪造来源页面
 * @parem $port 网站端口 默认 80
 * @parem 页面脚本执行时间 默认 30 s * */
function referer($url,$target,$port=80,$t=30)
{
    $info=parse_url($url);
    $fp = fsockopen($info["host"], $port, $errno, $errstr, $t);
    if(!$fp)
    {
        echo "$errstr($errno)".PHP_EOL;
    }
    else
    {
        $out = "GET ".$info['path']." HTTP/1.1".PHP_EOL;
        $out .= "Host: ".$info["host"].PHP_EOL;
        $out .= "Referer: ".$target.PHP_EOL;
        $out .= "Connection: Close".PHP_EOL;
        $out .= PHP_EOL;
        fwrite($fp, $out);
        while(!feof($fp))
        {
          echo fgets($fp); // 发送 head 请求头信息
        }
        fclose($fp);
    }
}
//函数调用
referer($url,$target);
Copy after login

Recommended learning: "PHP Video Tutorial"

The above is the detailed content of What are the three ways to forge referer addresses in PHP?. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template