原文地址:http://blog.sina.com.cn/s/blog_8729dd9801011rn1.html

在百度中搜索搜狐,点击链接进去,抓包信息如下:
GET http://www.sohu.com/ HTTP/1.1Host: www.sohu.comConnection: keep-aliveUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.4 (KHTML, like Gecko) Chrome/16.0.889.0 Safari/535.4Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Referer: http://www.baidu.com/s?tn=baidusite&word=�Ѻ�Accept-Encoding: gzip,deflate,sdchAccept-Language: zh-CN,zh;q=0.8Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3Cookie: www1=w:1; vjuids=26e753894.132e8ab7273.0.c409be1c; sci12=w:1; ent12=w:1; gn12=w:1; IPLOC=CN1200; SUV=1110092031152327; SOHUHOMETAB=visit:2; TurnAD9=visit:3; TurnADzs19=visit:1; TurnADzs20=visit:2; TurnAD351=visit:2; TurnAD119=visit:1; TurnAD118=visit:2; TurnAD10=visit:2; TurnAD120=visit:3; TurnAD11=visit:2; TurnAD414=visit:1; TurnAD415=visit:1; TurnAD349=visit:3; TurnADfankaniu=visit:2; TurnADab10e888e532c9887794784e83c9504c=visit:1; www0=w:1; FULL=w:1; COUPLET=w:1; tiyu11=w:1; tiyu12=w:1; vjlast=1318163543.1318741656.11If-Modified-Since: Sun, 16 Oct 2011 05:01:04 GMT
HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。
Referer其实应该是英文单词Referrer,不过拼错的人太多了,所以编写标准的人也就将错就错了。
关于HTTP Referer使用非常简单,使用场合比较多的是用于页面统计、资源防盗链等,但还是有一点值得注意的是:Referer是不安全的,客户端可以通过设置改变 Request中的值,尽量不要用来进行安全验证等方面。
Referer是不安全的,客户端可以通过设置改变 Request中的值,尽量不要用来进行安全验证等方面;下面介绍下默认情况下Referer可能出现为空的场景:
1、页面从https跳转到http,应该是处于安全考虑,该点在RFC-2616中有说明,主流浏览器均遵守这个规则,比如IE、FF;但默认情况下https到https是会发送Referer的。
2、直接在浏览器中输入目标URL。
3、由于FF提供了很强大的自定义参数设置功能,所以我们可以通过about:config页面修改以下两个选项的默认设置:network.http.sendRefererHeader (default=2),设置Referer的发送方式,0为完全不发送,1为只在点击链接时发送,在访问页面中的图像什么的时候不发送,2为始终发送。network.http.sendSecureXSiteReferrer (default=true),设置从一个Https访问到另外Https页面的时候是否发送Referer,true为发送,false为不发送。
4、从收藏夹访问。
5、单击’主页’或者自定义的地址
6、用js来window.open等方式打开(还有location.href,location.replace())。
在PHP中可以通过预定义变量$_SERVER获取HTTP的Referer,即:$_SERVER['HTTP_REFERER']。
Apache利用HTTP_Referer防盗链
呼叫中心企业后台管理系统和前台座席系统页面中都有通话记录录音的试听和下载功能,如何在用户试听和下载录音的时候不暴露录音地址或者录音地址不能被盗用呢?这就涉及到mp3,图片等资源的防盗链问题。
简单的,我们可以用HTTP请求header中的referer判断,只要referer是内部网站的地址或者可信任的地址,就可以访问相应资源。通过 Apache的FilesMatch配置可以实现,在 Apache的配置文件httpd.conf中加入:
SetEnvIfNoCase Referer “^http://www.example.com” local_ref=1SetEnvIfNoCase Referer “^http://test.example.com” local_ref=1<FilesMatch “\.(txt|doc|mp3|zip|rar|jpg|gif)”>Order Allow,DenyAllow from env=local_ref    #referer为www.example.com或test.example.com的请求Allow from 127.0.0.1          #本机地址</FilesMatch>
其中SetEnvIf指令根据客户端的请求属性设置环境变量,SetEnvIfNoCase代表当满足某个条件时,为变量赋值,一般结合其他指令使用。
也可以使用正则表达式:
SetEnvIf Referer “^http://(.)+\.ilinux\.cn/” local_ref=1 SetEnvIf Referer “^http://(.)+\.isql\.cn/” local_ref=1 SetEnvIf Referer “^http://(.)+\.other\.org\.cn/” local_ref=1 SetEnvIf Request_URI “/logo(.)+” local_ref=0 <FilesMatch “\.(mp3|wmv|png|gif|jpg|jpeg|avi|bmp|ram|rmvb|rm|rar|zip|mp3)”> Order Allow,Deny Allow from env=local_ref </FilesMatch>
以上配置方式都还也写到.htaccess,使用.htaccess文件也会存在一些问题,比如性能。如果使用.htaccess文件,则Apache需要在每个目录中查找该文件,还必须在所有更高级的目录中查找它,另外,每次请求一个页面时,也都需要读取.htaccess文件。因此,允许使用.htaccess文件都会导致性能的下降。
例如,对/var/www/htdocs中页面的请求,Apache必须查找以下文件:
/.htaccess/var/.htaccess/var/www/.htaccess/var/www/htdocs/.htaccess
总的来说,通过.htaccess来保护网站更为方便和灵活。
最后还可以用 Apache的mod_rewrite模块等进行防盗链。

HTTP Referer简介相关推荐

  1. HTTP系列之Referer和Referrer policy简介

    文章目录 1.前言摘要 2.Referer简介 3.Referer安全性 4.相关术语 5.Referrer Policy 5.1.no-referrer 5.2.no-referrer-when-d ...

  2. Linux下Web服务器应用之基础简介

    Linux下Web服务器应用之基础简介 一.web服务器基本知识: WWW 是 World Wide Web 的缩写 URL:<协定>://<主机地址或主机名>[:port]/ ...

  3. xhr XMLHttpRequest 简介

    XHR全称XMLHttpRequest XMLHTTP是一组API函数集,可被JavaScript.JScript.VBScript以及其它web浏览器内嵌的脚本语言调用,通过HTTP在浏览器和web ...

  4. http简介看这篇就够了

    文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源. 什么是协议 协议,网络协议的简称,网络协议是通信计算机双方必须共同遵从的一组约定.如怎么样建 ...

  5. http referer 验证防御方法_渗透测试 跨站攻击防御与安全检测手法剖析

    上一节讲到了渗透测试中xss跨站攻击检测方法和防护,这一节也是关于跨站攻击的另一个手法CSRF,很多客户找到我们想要了解更多的跨站攻击检测方法以及防御此类攻击的办法,想要让网站的安全性更加坚固,对此提 ...

  6. Postman用法简介-Http请求模拟工具

    Postman用法简介-Http请求模拟工具 在我们平时开发中,特别是需要与接口打交道时,无论是写接口还是用接口,拿到接口后肯定都得提前测试一下,这样的话就非常需要有一个比较给力的Http请求模拟工具 ...

  7. JavaEE基础(03):Http请求详解,握手挥手流程简介

    本文源码:GitHub·点这里 || GitEE·点这里 一.Http协议简介 1.概念说明 HTTP超文本传输协议,是用于从万维网服务器传输超文本到本地浏览器的传送协议,基于TCP/IP通信协议来传 ...

  8. Web应用防火墙WAF简介

    本文将对Web应用防火墙(WAF)做一个简单介绍,主要会讨论下面几个主题: WAF预防的攻击类型 WAF部署方式 WAF安全模式 开放Web应用安全项目(OWASP) WAF和DDos WAF测试 W ...

  9. http简介以及常见知识和http请求头,响应头,状态码,内容类型对照表分享(超实用)

    1.http简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的 ...

最新文章

  1. 如何创建一个百分百懂你的产品推荐系统 | 深度教程(附代码详解)
  2. python量化投资必背代码-量化投资:用Python实现金融数据的获取与整理
  3. 软件实施培训前的准备工作
  4. 结合webpack配置_前端 Webpack 工程化的最佳实践
  5. php中mysql和mysqli_PHP中mysql和mysqli的区别
  6. java setrotation_如何使用Java库将文档转换为横向模式?
  7. java开发微信公众平台备忘
  8. KafkaController介绍
  9. UI设计灵感|移动应用的数据表盘都是怎么设计的?
  10. [中级01]java为什么能跨平台,而C\C++语言不能跨平台
  11. JavaWeb之JSP技术总结
  12. 区块链 不可能三角是什么
  13. JavaWeb检测注册内容是否在数据库中有相同的内容
  14. HTML5超炫砸蛋抽奖源码
  15. 第1篇 初识IPP(Integrated Performance Primitives)
  16. 【Android Studio探索之路系列】之四:Android Studio快捷键
  17. Java回顾-String/StringBuilder/StringBuffer
  18. mysql 经典操作_mysql常用经典操作
  19. 个人学习笔记——庄懂的技术美术入门课(美术向)01
  20. 运行vue报错npm ERR! A complete log of this run can be found in解决办法

热门文章

  1. 完整登录、注册页面(无功能)
  2. gmail 邮箱附件大小 突破10M
  3. 分享| 三款在线临时文件分享工具,无需注册
  4. UnityHub 无需登录 傻瓜教程 一键搞定
  5. [幽默网文]好男人遭遇野蛮美女老婆
  6. Ambari2.7+HDP3.0安装(基于Centos7)
  7. obs-studio 二次封装 (四)obs 音视频采集到推流大体流程图
  8. High Availability for the HDFS Namenode
  9. VS2015中“项目无法加载,因为它缺少安装组件”的解决方法
  10. 机器人编程和少儿编程哪个难