PHP防盗链的基本思想&&防盗链的设置方法

  网站盗链会大量消耗被盗链网站的带宽,而真正的点击率也许会很小,严重损害了被盗链网站的利益。本文主要介绍用PHP实现防盗链的方法以及基本思想,希望对你有帮助,一起来看。

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

  做好防盗链工作能给网站服务器减少不少压力,这里我们分享一种php防盗链的

  实现方法:

  一般的下载的步骤:查找->输出查找结果列表->进入软件详细页面->点击下载按钮->打开下载页面->点击下载,开始下载

  我的方法就是在下载页面做文章

  首先在网站的公共文件里定义一个$key=sdkfjwojf32413这相当于一个密钥一样

  在下载页面生成一个随机数:$certcode = '84615354' (每次打开生成的都不一样)

  然后用以上两个变量和软件的ID生成一个md5()加密串

  然后生成软件的真实下载地址:file.php?id=5&codekey=ksfjwofsdkfsf

  这里的id是软件的编号可以根据他从数据库找到软件地址 $codekey=md5($id.$certcode.$key)

  然后把certcode保存到session里,

  在file.php的参数里面得到的codekey和id再从公共文件里得到$key 再从session里得到$certcode

  对codekey进么验证,看是否正确,如果不正确就退出,否则就进行如下操作

  1、删除session(再次打开这个地址就无效了)

  2、从数据库里读取软件地址,然后读取软件内容,并输出(用PHP的文件读取方法输出要下载的软件内容而不是直接把地址给他下载)

  这样如果要下载,就必须打开你自己的下载页面,从你的下载页面打开地址才能进行下载,而且下载地址每次都不一样,因为生成的随机数不一样

  别的地方就算连到你的下载地址,也是下载不了的。

  拓展阅读(具体实现):

  1.简单防盗链

  $ADMIN[defaulturl] = "http://www.vvschool.cn/404.htm";//盗链返回的地址

  $okaysites = array("http://www.vvschool.cn/","http://www.siyizhu.com"); //白名单

  $ADMIN[url_1] = "http://www.vvschool.cn/temp/download/";//下载地点1

  $ADMIN[url_2] = "";//下载地点2,以此类推

  $reffer = $HTTP_REFERER;

  if($reffer) {

  $yes = 0;

  while(list($domain, $subarray) = each($okaysites)) {

  if (ereg($subarray,"$reffer")) {

  $yes = 1;

  }

  }

  $theu = "url"."_"."$site";

  if ($ADMIN[$theu] AND $yes == 1) {

  header("Location: $ADMIN[$theu]/$file");

  } else {

  header("Location: $ADMIN[defaulturl]");

  }

  } else {

  header("Location: $ADMIN[defaulturl]");

  }?>

  使用方法:将上述代码保存为dao4.php,比如我测试用的validatecode.rar在我的站点里面,则用以下代码表示下载连接.

  文件名?site=1&file=文件

  2.服务器防盗链

  3.软件下载的防盗链方法

  //放置下载软件的根目录相对于当前脚本目录的相对目录

  $fileRelPath = "../../software";

  //例外允许连接的网址,注意:自身域名不需要填入,设定为肯定可以下载,

  // 空字符串("")表示直接输入网址下载的情况

  $excludeReferArr = array("www.wreny.com", "wreny.com");

  chdir($fileRelPath);

  $fileRootPath = getcwd() ."/";

  $filePath=$HTTP_GET_VARS["file"];

  $url=parse_url($_SERVER["HTTP_REFERER"]);

  if($url[host]!=$_SERVER["HTTP_HOST"] && !in_array($referHost, $excludeReferArr)){

  ?>

  其实,反盗链方式也有不少, 这里只列出一个大概思想作为参考:

  (1)IIS 反盗链, 利用ISAPI_Rewrite,可作为Windows下反盗链的一个解决方案;

  (2) 图片反盗链,在图片中加入水印,虽然盗链者可以达到目的,但是却也在为自己的网站做宣传。

  以上就是PHP防盗链的基本思想和设置方法,希望对大家的学习有所帮助。

PHP防盗链的基本思想&&防盗链的设置方法的更多相关文章

  1. PHP做好防盗链的基本思想 防盗链的设置方法

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

  2. Objective-C 链式编程思想

    链式编程思想 链式编程是什么 链式编程就是将调用多个方法用点语法连接起来,让代码更加简洁和可读性更高刚开始接触链式编程是Masonry,用起来真的非常爽 1 make.left.right.top.e ...

  3. iOS 开发之使用链式编程思想实现简单的计算器

    链式编程思想是将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,使代码可读性好.例如 a(1).b(2).c(3). 链式编程思想最为关键的是,方法的返回值是block,block必须返回对 ...

  4. 什么是作用域链,什么是原型链,它们的区别,在js中它们具体指什么?

    什么是作用域链,什么是原型链. 作用域是针对变量的,比如我们创建了一个函数,函数里面又包含了一个函数,那么现在就有三个作用域 全局作用域==>函数1作用域==>函数2作用域 作用域的特点就 ...

  5. 设计模式 -- 责任链模式或者叫职责链模式(Chain of Responsibility(CoR))

    什么是链?前后相连,一个连接下一个,其中包括多个节点,其实责任链模式也类似,他是多个对象之间相互关联,下一个对象的操作由上一个对象关联下来,上一个对象有个方法用于指向其他对象.职责链之间的前后关系是可 ...

  6. 未来-区块链-IBM:IBM 区块链技术开发社区

    ylbtech-未来-区块链-IBM:IBM 区块链技术开发社区 1.返回顶部 1. 开始学习 IBM Blockchain 101:开发人员快速入门指南 这篇快速入门指南适合不熟悉区块链技术,希望快 ...

  7. html 音乐 QQ播放器 外链 代码 播放器 外链 代码

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha QQ播放器 外链 代码 播放器 外链 代码 ======== 歌曲链接 QQ播放器 外链 ...

  8. 韩国版微信Kakao推出公链,能否用区块链实现全球扩张?

    2018年是属于区块链的一年,国内外巨头们纷纷布局区块链产业,前不久韩国最大的移动社交平台Kakao集团正式启动了旗下的第一个公链Klaytn的测试网. 此次宣布只是一次试探性举措,旨在对外公布Kla ...

  9. C过程思想,根据需求写方法就行

     实现的方法有多种 Comprehensive orientate 2017/10/27 13:25:07 C过程思想,根据需求写方法就行  

随机推荐

  1. Advanced redirection features

    here are three types of I/O, which each have their own identifier, called a file descriptor: standar ...

  2. 网页导航栏 html + css的代码实现

    一般来讲,我们的网页导航栏是这么个模式来构建在结构上:1.首先我们需要给导航栏的div 给个类名 一般为nav2.然后就是一个无序表格 3.由于导航栏的文字一般都是链接用来跳转页面 要在li里面包含一 ...

  3. BZOJ4484: [Jsoi2015]最小表示(拓扑排序乱搞+bitset)

    Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 348  Solved: 172[Submit][Status][Discuss] Descriptio ...

  4. iphone手机怎么录屏 两种方法任你挑选

    iphone手机怎么录屏呢?苹果手机拥有独特的Airlay镜像投屏,AirPlay的工作原理是当iPhone或IPAD与支持AirPlay技术的硬件,比如Apple TV等设备处在同一个wife的情况 ...

  5. 21.Odoo产品分析 (三) – 人力资源板块(2) – 工时表(1)

    查看Odoo产品分析系列--目录 工时表是一个用来管理员工工作时间和出勤的模块.当需要计算员工的工作时间,并将这些时间对应到项目或者顾客上时,"工时表"就会起到一个非常好的作用.  ...

  6. JMeter java.net.URISyntaxException:Illegalcharacterinquery解决方案

    java.net.URISyntaxException: Illegal character in query解决方案   by:授客 QQ:1033553122 测试环境 apache-jmeter ...

  7. ArrayMap 和HashMap的区别

    在以往android开发中,我们常常用key-value存储数据时,随手就会打出HashMap的代码,当数据量较小时,这种方法还不错还可以,当数据量比较多的时候,如果是PC机上,也还阔以.但是如果使用 ...

  8. Flutter 布局控件完结篇

    本文对Flutter的29种布局控件进行了总结分类,讲解一些布局上的优化策略,以及面对具体的布局时,如何去选择控件. 1. 系列文章 Flutter 布局详解 Flutter 布局(一)- Conta ...

  9. C# 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集

    1.在项目解决方案中,找到项目的app.config文件

  10. vs添加到附加进程调试(IIS页面调试)

    有时候单元测试不是很方便,通过页面调试接口会更直观,也跟容易发现问题(尤其是在页面传参的时候),这时vs添加到附加进程的调试方式就显得尤为重要了! 步骤如下: 1.首先是通过IIS建立网站,(前提是要 ...