Keep on going, never give up.

为PHP页面跳转和跨站提交伪造Referer地址

天缘博客留言链接暂时都是使用URL跳转的,在博客网页跳转中,原本使用了meta标签跳转,可惜跳转后REFERER参数丢失,也就是说从天缘博客跳转出去的地址,都是无法看到天缘博客http://www.metsky.com这个来路的,而是直接输入网址访问某个页面,虽然做好事不留名非常高尚,不过还是想学习研究一下这几个常用跳转方法的效果,经过测试发现使用window.location.href和window.location.replace也是无法达到传递REFERER效果。

一、尝试过的URL跳转方法

echo '<meta http-equiv="refresh" content="0; URL='.$url.'">';

echo '<scrīpt language="Javascrīpt">window.location.href="'.$url.'";</scrīpt>';

echo '<script language="Javascrīpt">window.location.replace="'.$url.'";</ script>';

以上三种方法均无法传递REFERER地址。

二、使用PHP Socket函数伪造REFER

下面是PHP伪造REFERER代码部分,经过测试可以实现REFERER地址传递,其中$url是输入地址。

$uinfo = parse_url($url);//解析URL地址,比如http://www.metsky.com/archives/1.html

if($uinfo['path']) //

    $data = $uinfo['path'];//这里得到/archives/1.html

else

    $data = '/';//默认根

if(!$fsp = @fsockopen($uinfo['host'], (($uinfo['port']) ? $uinfo['port'] : "80"), $errno, $errstr, 12)){

    echo "对不起对方网站暂时无法打开,请您稍后访问:".$uinfo['host'];    exit;

}else{

    fputs($fsp, "GET “.$data .” HTTP/1.0\r\n");//如果是跨站POST提交,可使用POST方法

    fputs($fsp, "Host: ".$uinfo['host']."\r\n");

    fputs($fsp, "Referer: www.metsky.com\r\n");//伪造REFERER地址

    fputs($fsp, "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n\r\n");

    $res='';

    while(!feof($fsp))  {

        $res.=fgets($fsp, 128);

        if(strstr($res,"200 OK")) {

            header("Location:$url"); exit;

        }

    }

}

//如果是301或302状态码可以继续处理

//返回地址大概形式:HTTP/1.1 301 Moved Permanently\nContent-Length: 164\nContent-Type: text/html\nLocation: http://www.metsky.com/

$arr=explode("\n",$res);

$arr=explode(": ",$arr[3]);//Location后面是真实重定向地址

header("location:".$arr[0]);//跳转目标地址

exit;

//这里如果还有301还需要再次处理,从略。

写完本文突然发现,PHP伪造REFERER可能在盗链或跨站提交中应用极大,比如跨站提交留言表单或盗链下载地址等,代码放在这里与大家共享,良好的互联网环境需要我们共同创造,建议大家就不要去搞跨站了。

各位网友:

——如果您有更好的方法,欢迎留言补充交流!

更多文章:

PHP相对路径和绝对路径常见处理方法

PHP常用正则表达式收集整理

PHP字符串正则替换及剖分函数比较

网页语言ASP.NET、PHP、JSP的特性区别及选择建议

PHP不执行短标签却源码显示输出的问题定位

相关评论(0):  

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

最新文章

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载也必须遵循“署名-非商业用途-保持一致”的创作共用协议. 返回顶部
Copyright@2005-2016 Metsky.com, All rights Reserved.