永发信息网

怎样才能防盗链?

答案:2  悬赏:0  手机版
解决时间 2021-04-17 02:48

怎样才能防盗链呀?

最佳答案



防盗链原理:

  http标准协议中有专门的字段记录referer


  一来可以追溯上一个入站地址是什么


  二来对于资源文件,可以跟踪到包含显示他的网页地址是什么。


  因此所有防盗链方法都是基于这个Referer字段


  网上比较多的2种


  一种是使用apache文件FileMatch限制,在httpd.conf中增加 ( 其实也可以将把下面的语句存成一个.htaccess文件),并放到你的网站的根目录(就是www/html目录),这样子别人就没有办法盗连你的东东了~~


  SetEnvIfNoCase Referer "^ http://yahoo.com/" local_ref=1


  Order Allow,Deny


  Allow from env=local_ref


  Allow from 127.0.0.1


  这种很方便禁止非允许访问URL引用各种资源文件


  请大家注意,把第一句"^ http://yahoo.com/"改为你的网站,比如我的网站是: http://www.linji.cn


  我应该这么写的


  "^ http://www.linji.cn/"


  第二种是使用rewrite,需要增加apache的mode_rewrite,支持.htaccess文件目录权限限制


  在虚拟主机根目录增加.htaccess文件,描述从定向,把非本地地址refer的图片文件都从定向到警告图片或者警告网页上。


  首先要确认你的服务器或空间的服务器解译引擎为Apache2,还有支持.htaccess客户设置文件,


  如果你有自己的服务器就请先对./conf/httpd.conf 文件做以下修改


  找到:#LoadModule rewrite_module modules/mod_rewrite.so


  把前面的 # 给去丢


  找到等一个 AllowOverride None 改为 AllowOverride All


  重启Apache2服务器


  接下就是做一个 .htaccess 文件了,其 .htaccess 文件内容为


  RewriteEngine on


  RewriteCond %{HTTP_REFERER} !^ http://aaoo.net/.*$ [NC]


  RewriteCond %{HTTP_REFERER} !^ http://aaoo.net$ [NC]


  RewriteCond %{HTTP_REFERER} !^ http://www.aaoo.net/.*$ [NC]


  RewriteCond %{HTTP_REFERER} !^ http://www.aaoo.net$ [NC]


  RewriteRule .*.(jpg|jpeg|gif|png|bmp|rar|zip|exe)$ http://down.yoyo.com.ru/err.html [R,NC]


  其中有色的地方都是要改为你的:


  红色:就是改为你提供下载页面的地址,也就是只有通过这个地址才可以下载你所提供的东东。


  蓝色:就是要保护文件的扩展名(以|分开),也就是说以这些为扩展名的文件只有通过红色的地址才可以访问。


  绿色:如果不是通过红色的地址访问蓝色这些为扩展名的文件时就回重定向到绿色地址上。


  这个方法有个好处是,不同的虚拟主机用不同的描述定义。


  接下就是怎么用 .htaccess 文件来实现防盗链了。


  首先要在空间上建两个目录(当然目录名随你),一个为 web 另一个为 down ,


  web 是用来放下载页面的(或下载程序),down 当然就是放你提供的东东的啦,


  把 .htaccess 文件的红色部分改一下,改为http://你的域名/web。蓝色部分


  改为你要保护文件的扩展名。绿色部分改为http://你的域名/web。改后保存


  .htaccess 文件把它上传到 down 目录。


  还有第三种:


  我在解决plog禁止盗链的时候,发现个问题,也算个好方法。


  plog把所有资源都自己管理起来,用resserver.php来动态显示,这样统一的入口方便添加权限操作。


  同时造成上面2种方法无法使用,因为不再是apache直接访问资源文件,而是php通过文件读取。


  因此只能在代码中做手脚:在读取资源文件输出之前,加如下判断代码


  引用


  $referer = $_SERVER['HTTP_REFERER'];


  $selfurl = $_SERVER['HTTP_HOST'];


  if(false == strpos($referer,$selfurl))


  {


  echo '非法盗链!';


  exit(1);


  }


  这里有些偷懒,直接看引用地址中是否包含host地址,不过原理就是这样,判断referer是否是本站地址。


  我们常常在下载的时候,也碰到盗链网站无法下载,报盗链的问题。要下载这类文件最简单的方法就是改referer


  比方flashget中,网址下面的"引用"一栏中,直接填写下载地址就可以了

全部回答
我想出一个 判断session
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
学校实训处要发展,大家有什么好的建议和想法.
新生事物的力量是挡不住的名言警句
“聪明的人不会再犯第二次相同的错误”这句话
买不买房其实没那么难,你只要明
北全七队地址有知道的么?有点事想过去
vivo X5换个屏幕多少钱
股票交易一手多少股,股票一手为多少钱呢?
我下载了地下城与勇士,为什么不可以玩啊
DX11的显卡可以向下兼容DX10,DX9的游戏么?
找一些唯美的歌词、 不要悲伤的。 最好是关于
为什么我的QQ显示不到别人QQ名字和头像,只看
我的mp5是索尼的(T8)为什么桌面墙纸只能用
海天丽锦大酒店地下停车场在哪里啊,我有事要
求大神解惑!背斜形成原因?断层不能建设隧道
爱要怎么呵护才能更长久?
推荐资讯
1952年农历五月初二是六月几号
在淘宝网买了东西,如何拖延时间不去确认,越
手机QQ里面的文件少一个就不能上了嘛?
表示农民辛勤的诗句,农村生活感悟与名言有关
cad里@1,-20
曲加豆是什么字
有没有一本小说男主叫伏羲女主叫花未眠
宠物狗吃什么东西,家里小狗吃了一个块芝士披
众秒必备的众可以翻译成所有吗
大人食积症状有哪些,成年人胃积食有什么症状
关于中秋节的祝福语10句
微信红包记录保留多久,微信转账记录怎么查
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?