ASP,PHP与.NET伪造HTTP-REFER ER方法及防止伪造R EFERE R方法探讨
2007-08-15 14:47HTT P-REFER ER这个变量已经越来越不可靠了完全就是可以伪造出来的东东。
以下是伪造方法
ASP:dim httpset http=serve r.creat eobje ct("MSXML 2.XMLHT TP") '//MSXML 2.serve rXMLHTTP也可以Http.open "GET",url,false
Http. setRe quest Heade r"Refer er", "http://www.dc9.cn/"
Http. send()
PHP(前提是装了curl) :
$ch = curl_init() ;curl_setop t ($ch, CURLO PT_UR L, "http://www.dc9.cn/xxx.asp") ;curl_setop t ($ch, CURLO PT_RE FERER, "http://www.dc9.cn/") ;curl_exec ($ch) ;curl_close ($ch) ;
PHP(不装cur l用soc k)
$serve r= 'www.dc9.cn' ;
$ho s t = 'www.dc9.cn' ;
$targe t = '/xxx.asp' ;
$refer er = 'http://www.dc9.cn/' ; // Refer er
$port = 80;
$fp = fsock open($serve r, $port, $errno, $errst r, 30) ;if (!$fp)
{echo "$errst r ($errno)<br />\n";
}else
{
$out = "GET $targe t HTTP/1. 1\r\n";
$out .= "Host: $host\r\n";
$out .= "Cooki e: ASPSE SSION IDSQT BQSDA=DFCAP KLBBF ICDAF MHNKI GKEG\r\n";
$out .= "Refer er: $referer\r\n";
$out .= "Conne ction : Close\r\n\r\n";fwrit e($fp, $out) ;while (!feof($fp) )
{echo fgets ($fp, 128) ;
}fclos e($fp) ;
}
VB.NET/C#.NET
Dim oXMLH ttp As MSXML 2.XMLHT TP30 = New MSXML 2.XMLHT TP30()
或者
MSXML 2.XMLHT TP30 oXMLH ttp = new MSXML 2.XMLHT TP30() ;oXMLH ttp.open(. . . .oXMLH ttp. setRe quest Heade r(. . .oXMLH ttp. send(. .javas criptxmlHt tp. setRe quest Heade r("Refer er", "http://URL") ;//???呵呵~假的~
JS不支持^_^
原理都是s ock构造http头来send data。其他语言什么的比如p erl也可以,
目前比较简单的防御伪造refe rer的方法是用验证码Sessi on。
现在有一些能防盗链软件的商业公司比如UUDOG linkgate Virtu alWal l什么的都是开发的应用于IIS上面的dll。
有的是采用cooki es验证、线程控制有的是能随机生成文件名然后做U RL重写。有的方法能的确达到不错的效果.
不过道高一尺魔高一丈这些雕虫小技终归是有破解方法的。
======================================================
? FeedB urner不认我的F eed了Ubuntu从源升级的一点心得?HTTP Refer er二三事授权方式署名非商业用途保持一致转载时请务必以超链接 (http://www.fwo l f.com/blog/post/320)的形式标明文章原始出处和作者信息及本声明。什么是HTTPReferer简言之HTTP Refer er是he ader的一部分 当浏览器向web服务器发送请求的时候一般会带上Refer er告诉服务器我是从哪个页面链接过来的服务器籍此可以获得一些信息用于处理。 比如从我主页上链接到一个朋友那里他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。
Refer er其实应该是英文单词Refe rrer不过拼错的人太多了所以编写标准的人也就将错就错了 。
我的问题
我刚刚把f eed阅读器改变为G regar ius但他不像我以前用的l ifere a访问新浪博客的时候无法显示其中的图片提示“此图片仅限于新浪博客用户交流与沟通”我知道这就是HT TP Refer er导致的。
由于我上网客户端配置的特殊性首先怀疑是 squid的问题但通过实验排除了不过同时发现了一个Squid和Tor、 Privoxy协同使用的隐私泄露问题 留待以后研究。
Grega rius能处理这个问题么
答案是否定的因为Gre gariu s只是负责输出htm l代码而对图像的访问是有客户端浏览器向服务器请求的。
不过安装个fi refox扩展也许能解决问题文中推荐的”Send Refer rer”我没有找到但发现另外一个可用的 ” RefCo ntrol “可以根据访问网站的不同控制使用不同的Referer。
但是我不喜欢用Fir efox扩展来解决问题 因为我觉得他效率太低所以我用更好的方式——Privoxy。
Privoxy真棒
在Priv oxy的defaul t.action中添加两行
{+hide-refer er{forge}}
.album.sina.com.cn
这样Gre gariu s中新浪博客的图片就出来了吧 +hide-referer是Pr ivoxy的一个过滤器设置访问时对HTTP Refer er的处理方式后面的fo rge代表用访问地址当作Ref ere的还可以换成block代表取消R efere r或者直接把需要用的R efere r网址写在这里。用Priv oxy比用Firef ox简单的多赶紧换吧。
From https to http
我还发现从一个ht tps页面上的链接访问到一个非加密的ht tp页面的时候在http页面上是检查不到HTTPRefer er的 比如当我点击自己的h ttps页面下面的w3cxhtml验证图标网址为ht tp://validator.w3.org/check?uri=refer er 从来都无法完成校验提示No Refer er heade r found !
原来在http协议的rf c文档中有定义
15. 1.3 Encod ing Sensi tive Information in URI' s
. . .
Clien ts SHOULDNOT include a Referer header field in a (non-secure)
HTTP reque st if the referring page was trans ferre dwith a secur eproto col.
这样是出于安全的考虑访问非加密页时如果来源是加密页客户端不发送Refe rer IE一直都是这样实现的 Firef ox浏览器也不例外。但这并不影响从加密页到加密页的访问。Firef ox中关于Referer的设置
都在里有两个键值netwo rk.http. sendR efere rHead er (defau lt=2)
设置Ref erer的发送方式 0为完全不发送 1为只在点击链接时发送在访问页面中的图像什么的时候不发送 2为始终发送。参见Privacy Tip #3: Block RefererHeaders inFirefoxnetwo rk.http. sendS ecure XSite Refer rer (defau lt=true)
设置从一个加密页访问到另外一个加密页的时候是否发送Refer er true为发送 false为不发送。
利用Ref erer防止图片盗链
虽然Ref erer并不可靠但用来防止图片盗链还是足够的毕竟不是每个人都会修改客户端的配置。实现一般都是通过ap ache的配置文件首先设置允许访问的地址标记下来#只允许来自 domai n.com的访问 图片可能就放置在do main.com网站的页面上
SetEn vIfNo Case Refer er "^http://www.domai n.com/" local_ref
#直接通过地址访问
SetEn vIf Referer "^$" local_ref
然后再规定被标记了的访问才被允许
<FilesMatch ". (gif|jpg)">
Order Allow,Deny
Allow from env=local_ref
</Files Match>
或者
<Direc tory /web/image s>
Order Deny,Allow
Deny from all
Allow from env=local_ref
</Direc tory>
这方面的文章网上很多参考
Apach e下防止盗链的解决办法
Apach e的环境变量设置
配置Apach e实现禁止图片盗链
不要使用R erfer er的地方
不要把Re rfere r用在身份验证或者其他非常重要的检查上因为Rer ferer非常容易在客户端被改变不管是通过上面介绍的Firef ox扩展或者是Pr ivoxy甚至是li bcurl的调用所以Rer ferer数据非常之不可信。
如果你想限制用户必须从某个入口页面访问的话与其使用Referer不如使用session在入口页面写入ses sion然后在其他页面检查如果用户没有访问过入口页面那么对应的sessi on就不存在参见这里的讨论。不过和上面说的一样也不要过于相信这种方式的“验证”结果。
个人感觉现在Rerf erer除了用在防盗链其他用途最多的就是访问统计 比如统计用户都是从哪里的链接访问过来的等等。
野草云服务商在前面的文章中也有多次提到,算是一个国内的小众服务商。促销活动也不是很多,比较专注个人云服务用户业务,之前和站长聊到不少网友选择他们家是用来做网站的。这不看到商家有提供香港云服务器的优惠促销,可选CN2、BGP线路、支持Linux与windows系统,支持故障自动迁移,使用NVMe优化的Ceph集群存储,比较适合建站用户选择使用,最低年付138元 。野草云(原野草主机),公司成立于20...
imidc怎么样?imidc彩虹网路,rainbow cloud知名服务器提供商。自营多地区数据中心,是 Apnic RIPE Afrinic Arin 认证服务商。拥有丰富的网路资源。 在2021年 6.18 开启了输血大促销,促销区域包括 香港 台湾 日本 莫斯科 等地促销机型为 E3係,参与促销地区有 香港 日本 台湾 莫斯科 等地, 限量50台,售罄为止,先到先得。所有服务器配置 CPU ...
提速啦简单介绍下提速啦 是成立于2012年的IDC老兵 长期以来是很多入门级IDC用户的必选商家 便宜 稳定 廉价 是你创业分销的不二之选,目前市场上很多的商家都是从提速啦拿货然后去分销的。提速啦最新物理机活动 爆炸便宜的香港CN2物理服务器 和 日本CN2物理服务器香港CTG E5 2650 16G内存 20M CN2带宽 1T硬盘 150元/月日本CN2 E5 2650 16G内存 20M C...