来自 电脑系统 2019-12-18 20:48 的文章
当前位置: 金沙澳门官网网址 > 电脑系统 > 正文

哪些达成网址的防盗链

本文实例讲述了PHP伪造来源HTTP_REFERER的方法。分享给大家供大家参考。具体分析如下:

百度百科对防盗链的定义是

如今网络上十分流行论坛自动发帖机,自动顶贴机等,给众多论坛网站带来了大量的垃圾信息,许多网站只是简单地采用了判断HTTP_REFERER的值来进行过滤机器发帖,可是网页的HTTP_REFERER来路信息是可以被伪造的。任何事物都是双面刃,只要你善于利用就有其存在价值。

此内容不在自己服务器上,而通过技术手段,绕过别人放广告有利益的最终页,直接在自己的有广告有利益的页面上向最终用户提供此内容。 常常是一些名不见经传的小网站来盗取一些有实力的大网站的地址(比如一些音乐、图片、软件的下载地址)然后放置在自己的网站中,通过这种方法盗取大网站的空间和流量。

很早以前,下载软件如Flashget,迅雷等都可以伪造来路信息了,而这些软件的伪造HTTP_REFERER大多是基于底层的sock来构造虚假的http头信息来达到目的。本文就纯粹从技术角度讨论一下,php语言下的伪造HTTP_REFERER的方法,以期让大家了解过程,更好的防御。

这段话理解起来很生涩,举个例子:有时候我们从一个网站,比如腾讯,转载了一篇文章到自己的博客或空间,发现一些图片显示不了,这就是防盗链在起作用。图片是放在腾讯的服务器上的,腾讯拒绝其它网站的页面访问该资源。

环境:Apache/2.2.8 + PHP/5.2.5 + Windows XP系统,本地测试。首先,在网站虚拟根目录下建立1.php和2.php两个文件。其中,1.php文件内容如下:

一般情况下,当我们浏览一个网页时,并不是一次请求就会把整个页面的内容传到本地浏览器,尤其是当这个页面带有图片或者其它资源。第一次请求会传回该页面的HTML文本,浏览器解析该文本发现还有图片,会发送第二次请求,请求获得图片。盗链问题是:如果一个网站没有页面中所说的资源,它就会把这个图片链接到别的网站,这样没有任何资源的网站利用了别的网站的资源来展示给浏览者,提高了自己的访问量,而大部分浏览者又不会很容易地发现,这样显然,对于那个被利用了资源的网站是不公平的。一些不良网站为了不增加成本而扩充自己站点内容,经常盗用其他网站的链接。一方面损害了原网站的合法利益,另一方面又加重了服务器的负担。

n";} else{$out = "GET $target HTTP/1.1Host: $hostReferer: $refererConnection: Closernrn";fwrite;while {echo fgets;}fclose;}?>

要实现防盗链,我们就必须先理解盗链的实现原理,提到防盗链的实现原理就不得不从HTTP协议说起,在HTTP协议中,有一个表头字段叫referer,采用URL的格式来表示从哪儿链接到当前的网页或文件。换句话说,通过referer,网站可以检测目标网页访问的来源网页,如果是资源文件,则可以跟踪到显示它的网页地址。有了referer跟踪来源就好办了,这时就可以通过技术手段来进行处理,一旦检测到来源不是本站即进行阻止或者返回指定的页面。

另一个2.php文件很简单,只是写上一行读取当前的HTTP_REFERER服务器值的代码即可,如下:

Nginx防盗链的配置

";echo $_SERVER["HTTP_REFERER"];?>

  1、nginx针对文件类型的防盗链配置方法:

执行1.php文件,打开

  location ~* .(gif|jpg|png|swf|flv|bmp)$ {

HTTP/1.1 200 OK Date: Fri, 04 Apr 2008 16:07:54 GMT Server: Apache/2.2.8 PHP/5.2.5 X-Powered-By: PHP/5.2.5 Content-Length: 27 Connection: close Content-Type: text/html; charset=gb2312

  valid_referers none blocked *.php100.com php100.com;

看到了结果了吧,伪造来源HTTP_REFERER信息成功。所以,如果你的网站仅仅是判断HTTP_REFERER,并不是安全的,别人一样可以构造这样的来源,简单的防御方法就是验证页里加上验证码;还可以结合IP判断的方法。

  if ($invalid_referer) {

补充:ASP下的伪造来源的代码如下:

  #rewrite ^/ ;

如果你是一个有心人,请不要恶意利用这些方法,毕竟坏事做多了的话,效果就过犹不及了;比如你发大量的垃圾帖子吧,可能短期内会给你带来大量的外部链接,但这样的黑帽手段迟早要被搜索引擎发现,而这些已经发出去的链接就好像泼出去的水一样收不回来,这样的罪证就不是你能控制的了。

  return 403;

希望本文所述对大家的php程序设计有所帮助。

  }

  }

  这种方法是在server或者location段中加入:valid_referers none blocked,其中none表示空的来路,也就是直接访问,比如直接在浏览器打开一个文件,blocked表示被防火墙标记过的来路,*.php100.com表示所有子域名。

  2、nginx针对文件目录的防盗链配置方法:

  location /img/ {

  root /data/img/;

  valid_referers none blocked *.php100.com php100.com;

  if ($invalid_referer) {

  rewrite ^/ ;

  #return 403;

  }

本文由金沙澳门官网网址发布于电脑系统,转载请注明出处:哪些达成网址的防盗链

关键词: