手机版

用php伪造参考防止图片链被盗

时间:2021-11-11 来源:互联网 编辑:宝哥软件园 浏览:

什么是HTTP引荐者?简而言之,HTTP Referer是标头的一部分。当浏览器向web服务器发送请求时,通常会带上Referer,告诉服务器我链接的是哪个页面,这样服务器就可以得到一些信息进行处理。例如,如果你从我的主页链接到一个朋友,他的服务器可以统计每天有多少用户点击我主页上的链接从HTTP Referer访问他的网站。其实refer应该是英文单词refer,但是拼错的人太多了,所以写标准的人会错。我的问题我只是把feed阅读器换成了Gregarius,但是和我之前用的liferea不一样,我在访问新浪博客的时候,无法显示里面的图片,暗示“这张图片只是给新浪博客用户交流和沟通的”。我知道这是由HTTP Referer引起的。因为我的互联网客户端配置的特殊性,一开始怀疑是squid的问题,但是通过实验消除了,但同时发现了Squid与Tor、Privoxy协同使用的一个隐私泄露问题,后面会研究。葛莱瑞乌斯能处理好这个问题吗?答案是否定的,因为Gregarius只负责输出html代码,对图像的访问是由客户端浏览器向服务器端请求的。然而,安装firefox扩展可能会解决这个问题。我没有找到本文推荐的“发送推荐人”,但找到了另一个可用的:“RefControl”,它可以根据访问的不同网站来控制不同推荐人的使用。但是我不喜欢用火狐扩展来解决问题,因为我觉得太低效了,所以我用了更好的方式来——Privoxy。普沃西太棒了。在Privoxy的default.action上加两行:{ hide-referrer { forge } } . album . Sina.com . cn,这样在Gregarius的新浪博客的图片就出来了?hide-Referer是Privoxy的一个过滤器,设置HTTP Referer在访问时的处理模式。下面的forge代表使用访问地址作为引荐人,也可以改成block,代表取消引荐人,或者直接写引荐人的URL在这里使用。使用Privoxy要比火狐容易得多,所以赶紧改吧。从https到http,我还发现,当我从https页面上的链接访问未加密的http页面时,我无法检查HTTP页面上的HTTP Referer。例如,当我点击https页面下的w3c xhtml验证图标时(网址是http://validator.w3.org/check?).Uri=referer),验证永远无法完成,提示:找不到refer头!最初,在http协议的rfc文档中,对其进行了定义:复制代码如下:15 . 1 . 3 uri的主体中的敏感信息编码不应在(非安全)中包含引用者头字段。如果引用页面是用安全协议传输的,则为Http。这是出于安全考虑。当访问未加密页面时,如果源是加密页面,客户端不会发送引用。IE一直都是这样实现的,火狐浏览器也不例外。但是,这并不影响从加密页面到加密页面的访问。Firefox中的referrer设置都是in,有两个键值:network.http.sendreferrereader(默认值=2)设置referrer的发送方式,0表示完全不发送,1表示只在点击链接时发送,2表示一直发送。请参见隐私提示# 3:在Firefox network . http . sendssecuresiterefer(默认值=true)中阻止推荐人标头,以设置从一个加密页面访问另一个加密页面时是否发送推荐人。真意味着送,假意味着不送。使用refer防止图片被链盗虽然refer不可靠,但足以防止图片被链盗。毕竟不是每个人都会修改客户端的配置。

一般通过apache配置文件来实现。首先,设置允许的地址,并标记下来:#只允许从don.com进入。图片可以放在don.com网站setenvif no base refer ' http://www.don.com/'local _ ref #的页面上。直接通过地址访问setenvif referer ' $ ' local _ ref,然后规定允许标记的访问:复制代码如下:个文件匹配'。(gif | jpg)' order allow,Deny Allow from env=local _ ref/file match或copy代码如下: directory/web/images order Deny,Allow Deny from all Allow from env=local _ ref/directory不要使用Rerferer进行身份验证或其他非常重要的检查,因为Rerferer在客户端非常容易被更改,无论是通过上面介绍的Firefox扩展、Privoxy还是甚至libcurl调用,因此Rerferer数据都非常不可靠。如果您想限制用户从某个门户页面访问,而不是使用Referer,请使用session,在门户页面中写入session,然后在其他页面上检查它。如果用户没有访问门户页面,相应的会话将不存在,请参见此处的讨论。但是,如上所述,不要过于相信这种方式的“验证”结果。个人感觉除了在防盗链中使用,Rerferer最多用于访问统计,比如统计用户访问的链接等等。

变量HTTP-REFERER变得越来越不可靠,完全是可以伪造的东西。以下是伪造方法:PHP(前提是安装了curl):复制代码如下: $ ch=curl _ init();curl_setopt ($ch,CURLOPT_URL,' http://www . d.cn/XXX . ASP ');curl_setopt ($ch,CURLOPT _ REFERER,' http://www . d.cn/');curl _ exec($ ch);curl _ close($ ch);PHP(curl未安装SOCK)$ server=' www . dc9 . cn ';$ host=' www . dc9 . cn ';$ target='/XXX . ASP ';$ refer=' http://www . d.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 ';出去。=' Host: $ host \ r \ n出去。=' Cookie : ASPSESSIONIDSQTBQSDA=dfcapklbbficdafmhnking小桶\ r \ n ';出去。=' Referer: $ referer \ r \ n出去。=' connection : Close \ r \ n \ r \ n ';fwrite($fp,$ out);while(!feof($fp)) {echo fgets($fp,128);} fc lose($ FP);} JavaScript xmlhttp . SetRequestHeader(' Referer ',' http://URL ');//哈哈~假的~JS不支持_ _原理是sock构造http头发送数据。也可以使用其他语言,如perl。目前,防止假冒推荐人的简单方法是使用会话。目前一些可以防范连锁软件的商业公司,比如UUDOG、linkgate、VirtualWall等。都是开发并应用于IIS的dll。一些使用cookies认证和线程控制,而另一些可以随机生成文件名和重写网址。有些方法真的可以达到很好的效果。然而道的高度是一尺,魔的高度是一尺。毕竟有办法破解这些雕刻昆虫的小技巧。一般都是这样,但是服务器不容易伪造,只能产生少量的数据。如果你能访问网页,你就能伪造它,然后你就能实现真正的伪造,实现自然的IP分发。

版权声明:用php伪造参考防止图片链被盗是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。