利用apache伪静态技术防止盗链
(在我们制作网站的过程中,可能会遇到这样的问题,就是其他的网站直接盗用了我们网站的图片或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伪静态技术防止盗链的更多相关文章
- 利用Referer请求头阻止"盗链"
转自:http://wisdomsong2007.blog.163.com/blog/static/47783725200882523820664/ 前言 有一些站点自己没有提供下载空间,但是为了吸引 ...
- Asp.net MVC 利用自定义RouteHandler来防止图片盗链
你曾经注意过在你服务器请求日志中多了很多对图片资源的请求吗?这可能是有人在他们的网站中盗链了你的图片所致,这会占用你的服务器带宽.下面这种方法可以告诉你如何在ASP.NET MVC中实现一个自定义Ro ...
- 转:【译】Asp.net MVC 利用自定义RouteHandler来防止图片盗链
[译]Asp.net MVC 利用自定义RouteHandler来防止图片盗链 你曾经注意过在你服务器请求日志中多了很多对图片资源的请求吗?这可能是有人在他们的网站中盗链了你的图片所致,这会占用你 ...
- Apache伪静态(Rewrite).htaccess文件详解
Htaccess(超文本访问)是一个简单的配置文件,它允许设计师,开发者和程序员通过它来改变Apache Web服务器的配置.这些功能包括用户重定向.URL重写(url rewrite,国内很多称为伪 ...
- php如何防止图片盗用/盗链的两种方法(转)
图片防盗链有什么用? 防止其它网站盗用你的图片,浪费你宝贵的流量.本文章向大家介绍php防止图片盗用/盗链的两种方法 Apache图片重定向方法 设置images目录不充许http访问 Apache服 ...
- Asp.Net Core 通过中间件防止图片盗链
一.原理 要实现防盗链,我们就必须先理解盗链的实现原理,提到防盗链的实现原理就不得不从HTTP协议说起,在HTTP协议中,有一个表头字段叫referer,采用URL的格式来表示从哪儿链接到当前的网页或 ...
- php如何防止图片盗用/盗链的两种方法
如今的互联网,采集网站非常多,很多网站都喜欢盗链/盗用别人网站的图片,这样不仅侵犯网权,还导致被盗链的网站消耗大量的流量,给服务器造成比较大的压力,本文章向大家介绍php如何防止图片盗用/盗链的两种方 ...
- php如何控制用户对图片的访问 PHP禁止图片盗链(转载)
把images目录设置成不充许http访问(把图片目录的:读取.目录浏览 两个权限去掉). 用一个PHP文件,直接用file函数读取这个图片.在这个PHP文件里进行权限控制. apache环境中,在你 ...
- php如何控制用户对图片的访问 PHP禁止图片盗链
本文摘自网络仅供学习只用 本人根据教程总结了一下https://www.imooc.com/video/13412 主要是利用apache的htacess进行控制,,拿什么判断是不是通过本站点访问的呢 ...
随机推荐
- Python Django 中间件
在http请求 到达视图函数之前 和视图函数return之后,django会根据自己的规则在合适的时机执行中间件中相应的方法. 中间件的执行流程 1.执行完所有的request方法 到达视图函数. ...
- Linux下fork机制详解(以PHP为例)
考:https://blog.csdn.net/jason314/article/details/5640969 1.fork简介 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统 ...
- Photobucket不能用了怎么办?推荐10个在线图片储存服务!
近日,图片共享服务网站Photobucket更新了政策,要求用户缴纳399美元的年费,才能使用第三方网站图片储存服务. 由于Photobucket出台这一政策,亚马逊及其他电商平台上相关的产品图片已被 ...
- ssdb使用笔记
ssdb是一款类似于redis的nosql数据库,不过redis是基于内存的,服务器比较昂贵,ssdb则是基于硬盘存储的,很容易扩展,对于一些对速度要求不是太高的应用,还是不错的选择. 先记录一个比较 ...
- efcore从数据库快速生成实体及context
有些项目开发时先建立数据库,再用codefirst来书写entity和EntityConfiguration,比较耗费功夫. 1.在vs2017中新建个asp.net core的web项目,或者其他项 ...
- Unity shader学习之逐像素漫反射光照模型
shader如下: Shader "Custom/Diffuse Fragment-Level" { Properties { _Diffuse (,,,) } SubShader ...
- node.js中net模块创建服务器和客户端(TCP)
node.js中net模块创建服务器和客户端 1.node.js中net模块创建服务器(net.createServer) // 将net模块 引入进来 var net = require(" ...
- Sql 嵌套循环
DECLARE @i INT ,@j INT BEGIN PRINT 'satrt i:'+CAST(@i AS varchar) BEGIN PRINT 'j:'+CAST(@j AS varcha ...
- 压缩和解压缩(I)
ZipArchive 压缩方法 -(void)zipArchiveWithFiles { //创建解压缩对象 ZipArchive *zip = [[ZipArchive alloc]init]; / ...
- Block 循环引用(中)
不会造成循环引用的block 大部分GCD方法 dispatch_async(dispatch_get_main_queue(), ^{ [self doSomething]; }); 因为self并 ...