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

做好防盗链工作能给网站服务器减少不少压力,这里我们分享一种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.简单防盗链

  1. $ADMIN[defaulturl] = "http://www.vvschool.cn/404.htm";//盗链返回的地址
  2. $okaysites = array("http://www.vvschool.cn/","http://www.siyizhu.com"); //白名单
  3. $ADMIN[url_1] = "http://www.vvschool.cn/temp/download/";//下载地点1
  4. $ADMIN[url_2] = "";//下载地点2,以此类推
  5. $reffer = $HTTP_REFERER;
  6. if($reffer) {
  7. $yes = 0;
  8. while(list($domain, $subarray) = each($okaysites)) {
  9. if (ereg($subarray,"$reffer")) {
  10. $yes = 1;
  11. }
  12. }
  13. $theu = "url"."_"."$site";
  14. if ($ADMIN[$theu] AND $yes == 1) {
  15. header("Location: $ADMIN[$theu]/$file");
  16. } else {
  17. header("Location: $ADMIN[defaulturl]");
  18. }
  19. } else {
  20. header("Location: $ADMIN[defaulturl]");
  21. }?>

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

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

2.服务器防盗链

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

  1. //放置下载软件的根目录相对于当前脚本目录的相对目录
  2. $fileRelPath = "../../software";
  3. //例外允许连接的网址,注意:自身域名不需要填入,设定为肯定可以下载,
  4. // 空字符串("")表示直接输入网址下载的情况
  5. $excludeReferArr = array("www.wreny.com", "wreny.com");
  6. chdir($fileRelPath);
  7. $fileRootPath = getcwd() ."/";
  8. $filePath=$HTTP_GET_VARS["file"];
  9. $url=parse_url($_SERVER["HTTP_REFERER"]);
  10. if($url[host]!=$_SERVER["HTTP_HOST"] && !in_array($referHost, $excludeReferArr)){
  11. ?>

其实,反盗链方式也有不少, 这里只列出一个大概思想作为参考:⑴ IIS 反盗链, 利用ISAPI_Rewrite,可作为Windows下反盗链的一个解决方案;⑵ 图片反盗链,在图片中加入水印,虽然盗链者可以达到目的,但是却也在为自己的网站做宣传。

http://developer.51cto.com/art/201105/265961.htm

转载于:https://www.cnblogs.com/andydao/p/4121274.html

PHP做好防盗链的基本思想 防盗链的设置方法相关推荐

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

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

  2. 文章抓取显示盗链 php,web资源盗链与防盗链技术解析

    摘要:什么是资源盗链?简单的说,就是某些不法的网站,通过在其自身网站程序里未经过许可非法调用其他网站的资源,然后在自己的网站上显示这些调用的资源,达到了填充自身网站显示的效果,但是浪费了调用资源网站的 ...

  3. 宝塔php防盗链,宝塔面板开启防盗链的方法详细教程

    为了节省建站成本,大多数站长都会选择一些小服务器,在另加CDN.云存储之类的来减轻服务器的压力,但是这类功能大多收费. 如果自己网站的图片都让别人复制图片链接地址,那么自己CDN流量就跑得贼快,花了钱 ...

  4. php 大型网站内链,网站SEO关键词优化如何做好站内链接即网站内链?

    网站SEO关键词优化如何做好站内链接即网站内链? 这篇记录文章应该主要算是一个思维探讨. 针对网站SEO关键词优化怎么做好站内链接即网站内链(以下简称:网站内链),理想化,大家将网站内链比作一张网,蜘 ...

  5. c/c++教程 - 2.4.3 this指针作用,链式编程思想,空指针访问成员函数,const修饰成员函数,常函数,常对象

    目录 4.3 C++对象模型和this指针 4.3.1 成员变量和成员函数分开存储 4.3.2 this指针概念(非常重要) 4.3.3 空指针访问成员函数 4.3.4 const修饰成员函数 相关教 ...

  6. 怎么做好网站seo优化,网站外链平台有哪些

    外链发布对于一个新站来说,还是比较重要的,因为如果外链增加不仅可以给网站投票,还能为网站引流.那么可以发布外链的网站有哪些? 1.百度贴吧. 这是百度自有平台,外链还是挺重要的,尤其到百度站长平台,把 ...

  7. php 防止倒链,PHP防止图片倒链

    标签:倒链 原帖地址:http://blog.csdn.net/xueling022/article/details/53053383 1.Apache服务器下防止图片盗链的办法 如果你的网站以图片为 ...

  8. 1分钟链圈|腾讯区块链(天津)被责令更名;Casper更新可能导致社区再次分裂...

    hi,艾瑞巴蒂! 这里是 10 月 27 日的每日1句话新闻晚报,只需1分钟,看看全球最热.最新的区块链新闻. 实时币价:BTC $6478.92   ETH $203.62   EOS $5.39  ...

  9. 链上存证、链下传输的可信数据共享平台

    点击上方蓝字关注我们 链上存证.链下传输的可信数据共享平台 张召1, 田继鑫2, 金澈清1 1 华东师范大学数据科学与工程学院,上海 200062 2 MCT Technology,上海 200023 ...

  10. 杭州趣链张帅:趣链拥有大厂都没有的优势

    11月8日,由中国信息通信研究院.中国互联网协会.中国通信标准化协会和可信区块链推进计划联合主办的2019可信区块链峰会在京召开. CSDN借此机会,群访了杭州趣链科技市场总监张帅. 趣链:专门做区块 ...

最新文章

  1. 小程序聊天室开发,发送文字,表情,图片,音频,视频,即时通讯,快速部署,可定制开发
  2. Vertica集群扩容实验过程记录
  3. [20150205]分析函数ntile.txt
  4. JQuery利用css()修改样式后 hover失效的解决办法
  5. Linux的解决vmware的Linux系统IP自动变化
  6. 骚操作!曾经爱过!用 Python 清理收藏夹里已失效的网站
  7. python中等高线填充颜色_Python matplotlib等高线图对数颜色
  8. 【转载】高效能,大数据量存储方案SqlBulkCopy
  9. 2020年上半年短视频内容发展盘点报告
  10. 关于Python的随机数模块,你必须要掌握!
  11. ajax向后台传多个值,jQuery ajax如何传多个值到后台页面,举例:(示例代码)
  12. oracle中sqlplus,Oracle sqlplus命令的详细解析
  13. 星舆科技北斗高精度定位网启动北斗三号服务
  14. java list去重工具_开发常用小工具类:list集合去重
  15. Dhtmlx Gantt如何LightBox自定义表单元素
  16. 摄影后期人像高端摄影后期PS修图技巧
  17. 金彩教育:如何提升店铺的信誉
  18. 海外自媒体多账号运营注意事项看这里!
  19. NTFS下的USN日志文件
  20. 国家气象局天气预报中城市代码

热门文章

  1. AIO 理论 与 编程
  2. 阶段3 1.Mybatis_05.使用Mybatis完成CRUD_7 Mybatis中参数的深入-使用实体类的包装对象作为查询条件...
  3. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第4节 方法引用_4_方法引用_通过super引用父类的...
  4. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_6_Stream流中的常用方法_count...
  5. Linux基础学习-NFS网络文件系统实时文件共享
  6. 突然出现 -bash: pod: command not found 的解决方法
  7. 纯CSS实现三列布局(两边固定,中间自适应)
  8. 怎么把jdk和jRE的Javadoc文档整合到MyEclipse
  9. android selector
  10. 将 datetimepicker 嵌入 bindingNavigator