(在我们制作网站的过程中,可能会遇到这样的问题,就是其他的网站直接盗用了我们网站的图片或css或js,这样可能会大大增加我们自己网站的负载。

所以,我们应该考虑一下怎样防止这样的事情发生。)

下面我们来模拟一个防盗链的情况:

比如我们的网站下面有一个publicimage目录和一个privateimage目录,其中publicimage目录可以让别人访问,而privateimage目录只能自己访问。

我们应该怎样去实现呢?

我们能想到的方法是:利用apache伪静态技术完成,那应该怎样去做了,下面我们介绍两种方式:

(apache虚拟主机域名的配置,以及rewrite组件的开启和".htaccess"文件配置我这里就不说了,大家可以到网上搜索,这些东西不是很难哈。)

第一种方式,修改.htaccess文件配置(.htaccess文件是分别放在publicimage和privateimage文件夹下哈)

在privateimage文件夹中的.htaccess文件中写入:

Order deny, allow

deny from all

allow from 127.0.0.1

以上代码表示,先查看deny,在查看allow

决绝所有的访问,但是允许本地访问。

咋一看我们似乎是解决了我们上面说过的问题,但是这样的设置有一个bug,就是比如我们本地的apache配置了两个域名分别为:www.panchao.com和www.test.com。而需要控制的上面两个文件夹存在于www.panchao.com这个域名下,但是就上面的.htaccess规则来说,我们使用www.test.com域名去访问privateimage文件夹中的图片也是没问题的。这就和我们的想法相悖了,我们希望只有www.panchao.com这个域名能够访问privateimage文件夹下的图片。由此我们引出了第二种防盗链方式。

第二种方式,也是修改.htaccess文件配置,但和第一种方式的配置很不一样。

在privateimage文件夹中的.htaccess文件中写入:

<ifModule rewrite_module>

RewriteEngine On

#我们怎么知道,请求就是www.panchao.com发来的呢? 使用 http的 referer头信息

#如果你请求的是一个jpg图片, 就禁止

RewriteCond %{HTTP_REFERER} !www.panchao.com

RewriteRule .*\.jpg -[F]

</ifModule>

以上代码代表的意思就是:

首先是rewrite引擎开启

然后,我们判断发出请求的HTTP_REFERER是不是www.panchao.com,如果不是,那么访问.jpg文件的请求就被禁止。

tips:虽然上面的技术能够实现防盗链,但是这些东西归根结底是人写出来的,如果有人就是想盗链,比如他修改了请求的HTTP_REFERER,还是能够进行盗链的,这就需要我们在处理这些问题的时候想的更周全一点。

但是,我觉得,如果我们做到了上面的设置,防止90%以上的盗链是没有问题的哈。

利用apache伪静态技术防止盗链的更多相关文章

  1. 利用Referer请求头阻止"盗链"

    转自:http://wisdomsong2007.blog.163.com/blog/static/47783725200882523820664/ 前言 有一些站点自己没有提供下载空间,但是为了吸引 ...

  2. Asp.net MVC 利用自定义RouteHandler来防止图片盗链

    你曾经注意过在你服务器请求日志中多了很多对图片资源的请求吗?这可能是有人在他们的网站中盗链了你的图片所致,这会占用你的服务器带宽.下面这种方法可以告诉你如何在ASP.NET MVC中实现一个自定义Ro ...

  3. 转:【译】Asp.net MVC 利用自定义RouteHandler来防止图片盗链

    [译]Asp.net MVC 利用自定义RouteHandler来防止图片盗链   你曾经注意过在你服务器请求日志中多了很多对图片资源的请求吗?这可能是有人在他们的网站中盗链了你的图片所致,这会占用你 ...

  4. Apache伪静态(Rewrite).htaccess文件详解

    Htaccess(超文本访问)是一个简单的配置文件,它允许设计师,开发者和程序员通过它来改变Apache Web服务器的配置.这些功能包括用户重定向.URL重写(url rewrite,国内很多称为伪 ...

  5. php如何防止图片盗用/盗链的两种方法(转)

    图片防盗链有什么用? 防止其它网站盗用你的图片,浪费你宝贵的流量.本文章向大家介绍php防止图片盗用/盗链的两种方法 Apache图片重定向方法 设置images目录不充许http访问 Apache服 ...

  6. Asp.Net Core 通过中间件防止图片盗链

    一.原理 要实现防盗链,我们就必须先理解盗链的实现原理,提到防盗链的实现原理就不得不从HTTP协议说起,在HTTP协议中,有一个表头字段叫referer,采用URL的格式来表示从哪儿链接到当前的网页或 ...

  7. php如何防止图片盗用/盗链的两种方法

    如今的互联网,采集网站非常多,很多网站都喜欢盗链/盗用别人网站的图片,这样不仅侵犯网权,还导致被盗链的网站消耗大量的流量,给服务器造成比较大的压力,本文章向大家介绍php如何防止图片盗用/盗链的两种方 ...

  8. php如何控制用户对图片的访问 PHP禁止图片盗链(转载)

    把images目录设置成不充许http访问(把图片目录的:读取.目录浏览 两个权限去掉). 用一个PHP文件,直接用file函数读取这个图片.在这个PHP文件里进行权限控制. apache环境中,在你 ...

  9. php如何控制用户对图片的访问 PHP禁止图片盗链

    本文摘自网络仅供学习只用 本人根据教程总结了一下https://www.imooc.com/video/13412 主要是利用apache的htacess进行控制,,拿什么判断是不是通过本站点访问的呢 ...

随机推荐

  1. 前端文档汇总(含代码规范、开发流程、知识分享,持续更新) front-end-Doc

    https://juejin.im/post/5b1205b1f265da6e1a602a62 https://juejin.im/post/5b1205b1f265da6e1a602a62 http ...

  2. 向数据库中添加数据,通过se16 不能添加,通过 代码可以添加的原因

    1:  在向数据库中添加数据时,通过客户端se16 准备对 数据表进行添加数据,提示如下: 找了以下原因,如下: https://www.baidu.com/link?url=3yRtAfY1_9XG ...

  3. Android使用SpannableString设置多样式文本

    Android将一行文本设置为多种样式时,可以使用 SpannableString 来实现 private void setTips(){ String big = "大字深色"; ...

  4. Dockerfile详解(一)

    Dockerfile 用于自动化构建一个docker镜像.Dockerfile里有 CMD 与 ENTRYPOINT 两个功能咋看起来很相似的指令,开始的时候觉得两个互用没什么所谓,但其实并非如此: ...

  5. 「美团外卖APP签约快捷支付」流程体验

    §1 添加银行卡 新用户在美团外卖APP订餐支付时,首先要绑定银行卡.如下是“添加银行卡”页,输入卡号后,系统自动调用卡bin库校验卡号的有效性,如果有效会显示发卡行和卡类型(借记卡/贷记卡).  这 ...

  6. mysql 命令一套

    MySQL mysql -h主机地址 -u用户名 -p用户密码 首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root  -p,回车后提示你输密码.注意用户名前可以有 ...

  7. OBV15 案例5,上M10拉高出货

  8. Css预处理器---Less(二)

    三.Less语法 (1)变量 //less代码 @nice-blue : #5B83AD; @light-blue : @nice-blue + #111; #header { color : @li ...

  9. JavaScript-模拟收银台小程序

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  10. caffe-ssd的GPU安装时make runtest报错: BatchReindexLayerTest/3.TestGradient, where TypeParam = caffe::GPUDevice<double>

    报错原因:装了两个cuda,BatchReindexLayerTest/3.TestGradient不能确定用那个 解决办法1:删除其中一个(最好删除9.1,TensorFlow支持的是9.0,为了后 ...