IIS服务器的网站防盗链的解决方案

IIS服务器的网站防盗链的解决方案盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。针对图片的防盗链方法:在httpd.ini文件的任意处增加下列代码(IIS的httpd.ini和Apache的.htacces…

大家好,又见面了,我是你们的朋友全栈君。

盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。

针对图片的防盗链方法:httpd.ini 文件的任意处增加下列代码(IIS 的 httpd.ini 和 Apache 的 .htaccess  文件原理是一样的!)

RewriteCond Host: (.+)
#排除以下网站
RewriteCond Referer: (?!http://(?:173it\.cn|(.*)\.173it\.cn|72km\.cn|(.*)\.php100\.com|baidu\.com|(.*)\.baidu\.com|google\.com|(.*).\google.com)).*
#其他网站的图片、软件下载请求都转向到 block.png 中
RewriteRule (.*\.(?:jpg|jpeg|gif|png|bmp|rar|zip|exe)) /block.png [I,O,N]

针对下载的防盗链方法: download.php 文件相当于一个“守城兵”,负责保护数据、传递数据。它会判断 $_SERVER[‘HTTP_REFERER’] 与本站域名是否有匹配,如果否,则说明该下载请求来自他站,此时拒绝下载,显示“请不要盗链本站资源”。如果是本站的下载请求,则调用下载类—-读取文件并输出下载。($_SERVER[‘HTTP_REFERER’]  这个服务器变量的意思是:获取当前链接的上一个连接的来源地址,即链接到当前页面的前一页面的 URL 地址)

主要有两个文件:download.php 、Download.class.php    下载

现在开始看代码:

假设我提供下载的地址是:http://www.173it.cn/download.php?fn=文件名.rar 

当此链接被点击后,download.php 开始工作——过滤非本站的下载请求,如请求通过,则返回数据给用户。

download.php

<?php
include_once ‘Download.class.php’;
$referer = $_SERVER[‘HTTP_REFERER’];
$host    = ‘php95.com’;
if(!strpos($referer,$host)){

    echo ‘请不要盗链本站资源!’;
}else{

 // 压缩文件自由放置,在这里加上路径就可以了。比如  $fn = ‘\a\b\c\\’.$_GET[fn]; 
 $fn = $_GET[fn];
 $dl=new Download();
 $dl->_dl_($fn);
}
?>

Download.class.php

/**
* 下载类
* 示例: $dl = new Download(); $dl->_dl_(‘a.rar’);
**/
 class Download{

  var $cache_size=1024;
  function Download(){}
  //文件的相对路径
  function _dl_($path)
  {

   $full_path=getcwd().$path;
   //echo $full_path;
   if(!file_exists($full_path)){

    echo “File Not Find.”;
    exit;
   }else{

    $handle=fopen($full_path,”rb”);
    Header(“Content-type:”.$this->getmimetype($full_path));
    Header(“Accept-Ranges:bytes”);
    Header(“Accept-Length:”.filesize($full_path));
    $infos=pathinfo($full_path);
    Header(“Content-Disposition:attachment;filename=”.$infos[“basename”]);
    while(!feof($handle)){

     echo fread($handle,$this->cache_size);
    }
    fclose($handle);
    exit;   
   }
  }
  function getmimetype($path){

   $mimeArray=array();
   $mimeArray[“zip”]=”application/zip”;
   $mimeArray[“wav”]=”audio/x-wav”;
   $mimeArray[“xml”]=”application/xml”;
   $mimeArray[“txt”]=”text/plain”;
   $mimeArray[“tar”]=”application/x-tar”;
   $mimeArray[“swf”]=”application/x-shockwave-flash”;
   $mimeArray[“rm”]=”application/vnd.rn-realmedia”;
   $mimeArray[“pdf”]=”application/pdf”;
   $mimeArray[“mp3″]=”audio/x-mpeg”;
   $mimeArray[“mid”]=”audio/x-midi”;
   $mimeArray[“js”]=”text/javascript”;
   $mimeArray[“jad”]=”text/vnd.sun.j2me.app-descriptor”;
   $mimeArray[“gz”]=”application/x-gzip”;
   $mimeArray[“gtar”]=”application/x-gtar”;
   $mimeArray[“exe”]=”application/octet-stream”;
   $mimeArray[“doc”]=”application/msword”;
   $mimeArray[“rar”]=”application/octet-stream”;
  
   $infos=pathinfo($path);
   return $mimeArray[$infos[“extension”]]; 
  }
 }//end class Download

?>

对外提供下载地址的格式是:http://本站域名/download.php?fn=文件名.rar

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163473.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Delphi 教程

    Delphi 教程1.点击Project->View Source 可以看到工程的代码program Project1;uses  Forms,  Unit1 in ‘Unit1.pas’ {Form1};{$R *.res}begin  Application.Initialize;  Application.CreateForm(TForm1, Form1);

    2022年6月29日
    57
  • 数据仓库搭建ODS层[通俗易懂]

    数据仓库搭建ODS层[通俗易懂]其他内容请关注我的博客!在<项目>专栏里!!!目录一、用户行为数据1.1创建日志表1.2ODS层加载数据脚本二、业务数据2.1hive建表2.2ODS层加载数据脚本一、用户行为数据1.1创建日志表1)创建支持lzo压缩的分区表droptableifexistsods_log;CREATEEXTERNALTABLEods_log(`line`string)PARTITIONEDBY(`dt`string)–

    2022年10月5日
    4
  • Django(24)永久重定向和临时重定向[通俗易懂]

    Django(24)永久重定向和临时重定向[通俗易懂]重定向重定向分为永久重定向和临时重定向,在页面上体现的操作就是浏览器会从一个页面自动跳转到另外一个页面。比如用户访问了一个需要权限的页面,但是该用户当前并没有登录,因此我们应该给他重定向到登录页面。

    2022年8月7日
    4
  • 电脑弹出当前页面的脚本发生错误_360当前页面的脚本发生错误

    电脑弹出当前页面的脚本发生错误_360当前页面的脚本发生错误笔者Windows版本:Windows8Enterprise64位(DirectX11)Windows有一天忽然开始报“脚本错误当前页面的脚本发生错误”警告窗口:不管点“是”还是“否”,电脑使用一段时间以后还是会弹这个烦人的框。按照搜索来的解决办法,禁用IE的脚本调试选项:不起作用,还是会持续报以上警报。即便是重启电脑以后依然会如此。这…

    2022年10月21日
    2
  • 数据结构C语言严蔚敏版(第二版)超详细笔记附带课后习题[通俗易懂]

    数据结构C语言严蔚敏版(第二版)超详细笔记附带课后习题[通俗易懂]根据此书所做随笔笔记。一、绪论1.1、数据机构的研究内容用计算机解决实际问题时,步骤:首先分析实际问题,从中抽象出一个适当的数学模型,然后设计一个解决此数学模型的算法,最后编程,调试,测试。寻求数据模型的实质是分析问题,从中提取出计算机处理的对象,并找出这些对象之间的关系,然后用数学的语言加以描述。关键:分析问题中所用到的数据是如何组织的,研究数据之间存在什么样的关系。由于数据必须在计算机中处理,因此不能局限于数据本身的数学问题的研究,还必须考虑数据的物理结构,即数据在计算机中的存储结构。1.

    2022年6月10日
    97
  • 数据挖掘技术的由来

    数据挖掘技术的由来

    2021年5月14日
    95

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号