利用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进行控制,,拿什么判断是不是通过本站点访问的呢 ...
随机推荐
- C 表達式及返回值
以下程序的输出结果是__A____. #include<stdio.h> main() { ,j=; printf("%d,%d\n",++i,j--); } A., ...
- Mac搭建PHP+rabbitMQ环境
RabbitMQ是一个在AMQP基础上实现的企业级消息系统.何谓消息系统,就是消息队列系统,消息队列是“”消费-生产者模型“”的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取或者订阅 ...
- IOP知识点(1)
1 实例明细url显示 2 增加了logo图片可以编辑 1 实例明细url显示 是在iop中写死的配置 2 增加了logo图片可以编辑 仿照 admin里 服务工厂-服务定义中的内容 (1) ...
- [LeetCode] 130. Surrounded Regions_Medium tag: DFS/BFS
Given a 2D board containing 'X' and 'O' (the letter O), capture all regions surrounded by 'X'. A reg ...
- JAVA生成六位随机数
public static String getSixNum() { String str = "0123456789"; StringBuilder sb = new Strin ...
- rosetta mpi编译时出现 MPI has not been declared 错误
安装openmpi2.1.0版本,编译mpi rosetta时出现 MPI has not been declared 错误,经过一系列的摸索发现安装openmpi-1.6.5就可以顺利编译,降低版本 ...
- React对比Vue(一些小细节的差异)
@1===>发现一个神奇的地方在对数组进行增加删除的时候 react中一个输入框点击enter键,然后数组push,然后渲染 <input ref='valInput' onKeyUp={ ...
- Spring @Value注解 and Spring Boot @ConfigurationProperties注解
一.Spring的@Value Spring EL表达式语言,支持在XML和注解中表达式,类是于JSP的EL表达式语言. 在Spring开发中经常涉及调用各种资源的情况,包含普通文件.网址.配置文件. ...
- 网络编程之Socket异步编程
看了上篇socket入门,相信你已经对socket有一定的了解了http://www.cnblogs.com/nsky/p/4501782.html 现在来回顾一下.上篇在循环接收客户端连接和循环接收 ...
- node.js初识06
node中的fs文件系统 var http = require("http"); var fs = require("fs"); var server = ht ...