PHP程序员站--PHP编程开发平台
 当前位置:主页 >> PHP高级编程 >> 高级应用 >> 

PHP,asp与.net伪造HTTP 头

PHP,asp与.net伪造HTTP 头

来源:互联网  作者:未知  发布时间:2008-03-17
HTTP-REFERER这个变量已经越来越不可靠了,完全就是

HTTP-REFERER这个变量已经越来越不可靠了,完全就是可以伪造出来的东东。

以下是伪造方法:

ASP/Visual Basic代码
PHP(前提是装了curl):

以下是代码片段:

以下为引用的内容:
dim http    
set http=server.createobject("MSXML2.XMLHTTP") '//MSXML2.serverXMLHTTP也可以   
Http.open "GET",url,false    
Http.setRequestHeader "Referer","/"    
Http.send()    


PHP代码
PHP(不装curl用sock)

以下是代码片段:

以下为引用的内容:
$ch = curl_init();   
curl_setopt ($ch, CURLOPT_URL, "/xxx.asp");   
curl_setopt ($ch, CURLOPT_REFERER, "/");   
curl_exec ($ch);   
curl_close ($ch);   


PHP代码
以下是代码片段:

以下为引用的内容:
$server = 'www.dc9.cn';   
$host    = 'www.dc9.cn';   
$target  = '/xxx.asp';   
$referer = 'http://www.dc9.cn/';    // Referer   
$port    = 80;   
$fp = fsockopen($server, $port, $errno, $errstr, 30);   
if (!$fp)    
{   
   echo "$errstr ($errno)<br />\n";   
}    
else    

{   
        $out = "GET $target HTTP/1.1\r\n";   
        $out .= "Host: $host\r\n";   
        $out .= "Cookie: ASPSESSIONIDSQTBQSDA=DFCAPKLBBFICDAFMHNKIGKEG\r\n";   
        $out .= "Referer: $referer\r\n";   
        $out .= "Connection: Close\r\n\r\n";   
        fwrite($fp, $out);   
        while (!feof($fp))    
        {   
                echo fgets($fp, 128);   
        }   
        fclose($fp);   
}    
  

VB.NET/C#.NET

C#代码
以下是代码片段:

以下为引用的内容:
Dim oXMLHttp As MSXML2.XMLHTTP30 = New MSXML2.XMLHTTP30()   
或者   
MSXML2.XMLHTTP30 oXMLHttp = new MSXML2.XMLHTTP30();   
oXMLHttp.open(....   
oXMLHttp.setRequestHeader(...   
oXMLHttp.send(..   

目前比较简单的防御伪造referer的方法是用验证码(Session)。

Tags: http头   header   http协议   代码   php   伪造   asp   as   HTTP  
最新文章
推荐阅读
月点击排行榜
PHP程序员站 Copyright © 2007-2010,PHPERZ.COM All Rights Reserved 粤ICP备07503606号