• 技术文章 >后端开发 >PHP问题

    php伪造referer地址的三种方法是什么

    青灯夜游青灯夜游2021-09-18 16:00:57原创104

    方法:1、利用“file_get_contents($url,false,$context)”函数;2、CURL方式,利用curl_init()、curl_setopt()、curl_exec()等函数;3、利用fsockopen()函数。

    本教程操作环境:windows7系统、PHP7.1版,DELL G3电脑

    php获取当前页面的前一个页面URL地址,即当前页面是从哪个页面链接过来的,可以使用$_SERVER['HTTP_REFERER'];

    但是$_SERVER['HTTP_REFERER']也是可以被伪造欺骗的,有三种方法可以伪造和欺骗$_SERVER['HTTP_REFERER']

    注:window平台 使用phpstudy集成环境 nginx 此方法失效 ,apache 正常,其他平台版未测试

    第一种方法: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;

    file_get_contents中stream_context_create就伪造来源的重要参数了。

    第二种方法: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);

    第三种方法: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);

    推荐学习:《PHP视频教程

    以上就是php伪造referer地址的三种方法是什么的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:php 伪造referer地址
    上一篇:php中fopen函数的用法是什么 下一篇:php可改变常量的值吗
    大前端线上培训班

    相关文章推荐

    • php开启openssl的方法是什么• php如何转换图片为base64编码• php怎么显示错误行数• php清除字符串中的空格有哪些方法• php怎么过滤掉看不见的特殊字符串

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网