Referer和Referrer Policy详解

article/2025/10/9 2:04:26

最近换了个负责网络安全的leader,整个部门开始网络安全整顿,我们负责WEB的接到通知要求防御CSRF攻击,设置referer白名单。之前看过一点referer相关的,但是了解不够深入,趁这次机会好好了解了一下。

1. 什么是 Referer

Referer 是 HTTP 请求头的一个字段,当浏览器(或者模拟浏览器行为)向服务器发送请求时,浏览器会自动在请求头中加上 Referer 字段,表示的意思是链接的来源地址,比如在页面引入图片、JS 等资源,或者跳转链接,一般不修改策略,都会带上Referer。

比如在www.google.com 里有一个www.baidu.com 链接,那么点击这个www.baidu.com ,它的header 信息里就有:Referer=http://www.google.com

在这里插入图片描述
这里有个问题要说明下,Referer 实际上是单词 referrer 的错误拼写,Referrer-Policy 这个首部并没有延续这个错误拼写。

2. Referer 安全性

Referer 参数其实就告诉了链接的请求来源于哪个网站,所以可以根据这个特性,限制一些接口只能本网站的才能调,外部网站不能调。

这个参数常常是跟同源策略跨域请求关联在一起,因为现在普遍都是前后端分离项目, 前端页面的地址和后端 api 接口地址是跨域的,为了让后台接口判断是不是合法请求,除了前端在请求头中加上 Authorization 字段,后台也可以通过 Referer 字段判断请求来源。

另外,在 CSRF 攻击的防范中,除了 SameSite Cookie ,CSRF token 等方法,Referer 字段判断请求来源也是一种防范手段。

3. 什么是 Referrer-policy

Referrer Policy是W3C官方提出的一个候选策略,主要用来规范Referrer,简单来说就是规定什么时候发送 Referer 字段,以及发送哪些信息。

最初是只有5种策略的,现在规范增加到9种:

no-referrer
整个 Referer 首部会被移除,Referer 不随着请求一起发送。

no-referrer-when-downgrade (默认值)
在没有指定任何策略的情况下用户代理的默认行为。在同等安全级别(HTTPS -> HTTPS)的情况下,Referer 会被发送,在协议降级(HTTPS -> HTTP)的情况下 Referer 不会被发送。

origin
Referrer 发送的信息只包括协议+域名+端口,不包括其它信息。例如 https://example.com/page.html 会将 https://example.com/ 作为引用地址。

origin-when-cross-origin
对于同源的请求,会发送完整的URL作为引用地址,但是跨域时候只发送协议+域名+端口。

same-origin
同源请求发送,否则不发送。

strict-origin
在同等安全级别(HTTPS -> HTTPS)的情况下,发送Referrer(协议+域名+端口),但是在协议降级(HTTPS -> HTTP)的情况下不会发送。

strict-origin-when-cross-origin
对于同源的请求,会发送完整的URL作为引用地址;对于跨域请求,在同等安全级别(HTTPS -> HTTPS)的情况下,发送Referrer(协议+域名+端口);在协议降级(HTTPS -> HTTP)的情况下不发送此首部。

unsafe-url
无论协议是否降级,也不管是同源请求还是跨域请求,都发送完整的 URL(移除参数信息之后)作为引用地址,所以这种是一种不安全的协议。

这项设置会将受 TLS 安全协议保护的资源的源和路径信息泄露给非安全的源服务器。进行此项设置的时候要慎重考虑。—— Referrer-Policy,MDN文档

空字符串
相当于没有设置,在没有此类更高级别策略的情况下,默认使用 no-referrer-when-downgrade

4. Referrer-policy 使用方法

加在 Header 中

代码如下:

<script>
fetch(url, {referrerPolicy: "strict-origin-when-cross-origin"});
</script>

有一个疑问,在浏览器调试工具中,Referrer Policy 出现在 General 里面,并没有出现在请求或者响应的报文中,所以无法判断是在请求头还是响应头中。
在这里插入图片描述
MDN文档上说 Referrer Policy 是响应头中的字段,但我个人觉得如果是在响应头里面,请求都发出了,再响应这个字段也没啥用了。而如果是放在请求头里面,这个字段的作用是修改浏览器处理 Referer 的行为,提交给服务器也没啥用啊。
在这里插入图片描述
于是用Wireshark抓包工具看了一下报文信息,发现请求的时候只有 Referer ,没有 Referrer Policy ,说明这个字段并没有在实际请求的时候发送,也没有通过服务器响应接收:
在这里插入图片描述
所以 Referrer Policy 应该可以理解为浏览器自己的一个配置项,在构造 ajax 请求的时候可以添加到 header 中,这个配置项用于修改浏览器处理 Referer 的行为,但不会放到实际的 header 中发送给服务端。

页面设置
现在很多前端项目都是单页应用,可以在入口文件 index.html 中的 <head> 标签中添加 meta 信息:

<meta name="referrer" content="strict-origin-when-cross-origin">

元素设置
在html元素中设置 referrerpolicy

<a href="http://example.html" referrerpolicy="origin" target="_blank">链接</a>
<img src="/example.jpg" referrerpolicy="strict-origin-when-cross-origin" />

Referrer-Policy是有一个优先级顺序的:

  • Element-level policy

  • Page-level policy

  • Browser default

元素级别的策略优先级最高,页面级别的次之,浏览器默认值最低。所以,可以先设置一个较严格的页面级策略,再对某些资源做渐进增强。

5. Referer 应用场景

  1. 防盗链
  2. 防止恶意请求

参考:
Referrer-Policy MDN 官方文档
HTTP系列之Referer和Referrer policy简介
http请求头中Referer的含义和作用
HTTP的Referrer和Referrer Policy设置


http://chatgpt.dhexx.cn/article/7ZkqbU6c.shtml

相关文章

Referer  是什么?

版权所属&#xff1a;SO JSON在线解析 原文地址&#xff1a;https&#xff1a;//www.sojson.com/blog/58.html 转载时必须以链接形式注明原始出处及本声明。 Referer 是 HTTP 请求header 的一部分&#xff0c;当浏览器&#xff08;或者模拟浏览器行为&#xff09;向web 服…

响应式网页设计

目录 Responsive Web Design响应式网页设计流体网格&#xff08;Fluid grid&#xff09;弹性图片&#xff08;Flexible image&#xff09;srcset和sizes属性 SVGbackground-size CSS3媒体查询&#xff08;CSS3 media query&#xff09;和断点 meta渐进增强过时控制工具Moderniz…

css 与 html5

折叠隐藏文字 快捷键&#xff1a;span*6&#xff0c;然后敲一个tap键&#xff0c;会生成6个span标签写业务style之前&#xff0c;需要先清除style的内置样式也就是在style里面写上* {margin: 0;padding: 0;}注意body的height:100vh;不要写100%弹性盒子能使子元素垂直居中的条件…

前端Vue书籍翻页功能利用turn.js来完成以及知识点(源码)

目录 下载文档开始构造方法可配置项 方法语法 事件两种方式添加事件 自动翻页loading加载功能 案例CSSbasic.css源码如下 JS里面代码太多了,直接官网下载index.html源码如下 最终效果如下 下载 下载完里面有源码,好几种翻页效果,很不错~ 官网 文档 接口文档 开始 构造方法 …

html局部翻页效果,基于Turn.js 实现翻书效果实例解析

最近项目经理我个项目练练手,其项目需求是要实现翻书效果,看到这个需求后,我真是懵了,这咋整,我可是java出身的啊,这个问题真是难住我了,后来有同事的指导,之前他曾经做过PC版的翻书效果,当时使用的是Turn.js ,查过其相关API后,整个人突然豁然开朗呀,使用Turn.js 完…

用Modernizr和Yepnope进行递归增强

Alex Sexton的yepnope.js脚本加载程序的1.0版已于上周发布&#xff0c;因此我认为这是一个向您展示如何将Yepnope与Modernizr结合使用HTML5功能而又不招致最新用户下载的绝佳时机。 -划痕的浏览器。 什么是回归增强&#xff1f; 您可能已经熟悉渐进增强的概念&#xff1a;设计…

modernizr_使用Modernizr和Yepnope进行递归增强

modernizr Alex Sexton的yepnope.js脚本加载程序的1.0版已于上周发布&#xff0c;因此我认为这是向您展示如何将Yepnope与Modernizr结合起来以利用HTML5功能而又不招致最新用户的最佳时机。 -划痕的浏览器。 什么是回归增强&#xff1f; 您可能已经熟悉渐进增强的概念&#x…

Modernizr YepNope Tips

<style> <!-- p {text-indent:2em; line-height:24px; font-size:14px} h1, img {margin:0.6em 0} --> </style> 本文由前端开发whqet翻译自WDL&#xff0c;Rochester Oliveira2013年5月2日写的文章Modernizr & YepNope Tips。 每天都有新的更好的浏览…

教你如何申请注册微软邮箱【快速接收发送国外邮件】

如果要收发国内的邮件。网易和QQ不错的选择&#xff0c;如果接受国外邮件&#xff0c;还是国际性的公司&#xff0c;微软的outlook据说用户体验感比较好&#xff0c;先申请着&#xff0c;以备不时之需&#xff01; 申请地址&#xff1a;https://outlook.live.com/owa/ 点击创…

OutLook 2010 设置MSN邮箱

OutLook 2010 设置MSN邮箱 1、选择电子邮件账户&#xff0c;点击下一步 2、选择手动配置服务器设置或其他服务器类型(M)&#xff0c;点击下一步 3、选择Internet电子邮件(I)&#xff0c;点击下一步 4、按照提示&#xff0c;输入姓名&#xff0c;邮件地址&#xff0c;在服务…

如何申请@MSN.Com后缀的邮箱?

最近辞职在家无事,想申请个MSN.Com后缀的信箱,在网上搜索了一下,原来只要从下面的地址进入注册即可!注册抵制: https://accountservices.passport.net/reg.srf?nsmsn.com&sl1&lc2052 一口气申请了2个&#xff0c;哈哈! 您已经创建了一个 MSN 帐户 您现在可以使用电…

便捷注册live、MSN邮箱

live邮箱和msn邮箱现在已经不开放注册&#xff0c;而这两个邮箱还有些简短的很不错的用户名可用&#xff0c;方便记忆。网上有一些使用火狐浏览器和工具进行注册的办法&#xff0c;感觉过于繁琐&#xff0c;之后看到一个便捷的方式&#xff0c;亲测有效&#xff0c;分享给大家。…

阿里达摩院证实叶杰平、薄列峰入职,网易科技数字化产业周报来了

NEW 关注Tech逆向思维视频号 最新视频→【国家云强势来袭&#xff01;云计算市场要变天&#xff1f;】 阿里达摩院证实叶杰平、薄列峰入职&#xff0c; 每周一期数字化产业周报&#xff0c; 记录行业大事记、投融资动态和最新人事变动。 RECOMMEND “ 网易智能有12个不同垂直领…

上海创蓝253董事长_宝剑锋从磨砺出,创蓝253召开第四季度誓师大会

2018 年 10 月 13 日&#xff0c;创蓝 253 业务中心全体成员齐聚一堂&#xff0c;举办第三季度表彰大会暨第四季度誓师大会。大会的主题一是表彰业务中心第三季度优秀员工与优秀团队;二是制定第四季度目标&#xff0c;为冲刺全年目标做准备。 此次誓师大会上&#xff0c;创蓝 2…

罗剑锋透视HTTP协议学习笔记---31 | 时代之风(下):HTTP/2内核剖析

31 | 时代之风&#xff08;下&#xff09;&#xff1a;HTTP/2内核剖析 连接前言 连接前言 connection preface PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n在wireshark里称为magic&#xff0c;是一个纯HTTP/1消息&#xff0c;意思是以后的消息切换到HTTP/2 本来h2在ALPN或h2c的connec…

架构师成长之路:如何做基础框架设计?架构师落地的核心能力

前面&#xff0c;已经统一了对框架的认识。 接下来看看如何做基础框架设计&#xff0c;聊聊要做些什么、以及如何做基础框架设计&#xff1b;然后再看看使用基础框架功能的基本方式。 一&#xff1a;基础框架要实现的功能的来源 1&#xff1a;持续积累的通用功能、公共功能 …

浙江省CIO峰会|数据安全+数字化转型,美创特色实践获“年度数字化赋能服务商”

近日&#xff0c;浙江省CIO年度峰会暨数实融合创新发展大会在杭州成功举办。美创科技受邀参加本次峰会&#xff0c;与全省数字化领袖人才共话数字化发展。 对话数字化转型 美创分享能力实践 在本次峰会以“数字化转型的昨天 今天 明天”为主题的论坛对话环节&#xff0c;美创科…

数字化转型导师坚鹏:企业数字化营销能力提升

企业数字化营销能力提升 课程背景&#xff1a; 很多企业存在以下问题&#xff1a; 不清楚数字化营销对企业发展有什么影响&#xff1f; 不知道如何提升企业数字化营销能力&#xff1f; 不知道企业如何开展数字化营销工作&#xff1f; 课程特色&#xff1a; 原创企业数…

构建数据中台建设之路

阿里巴巴数据中台是阿里云上实现数据智能的最佳实践&#xff0c;它是由数据中台方法论组织工具所组成&#xff0c;数据中台方法论采用实现企业数据的全局规划设计&#xff0c;通过前期的设计形成统一的数据标准、计算口径&#xff0c;统一保障数据质量&#xff0c;面向数据分析…

罗剑锋透视HTTP协议学习笔记---25 | 固若金汤的根本(下):数字签名与证书

25 | 固若金汤的根本&#xff08;下&#xff09;&#xff1a;数字签名与证书 黑客虽然拿不到会话密钥&#xff0c;无法破解密文&#xff0c;但可以通过窃听收集到足够多的密文&#xff0c;再尝试着修改、重组后发给网站。因为没有完整性保证&#xff0c;服务器只能“照单全收”…