Web安全 - “Referrer Policy“ Security 头值不安全

文章目录

  • 概述
  • 原因分析
  • 风险说明
  • `Referrer-Policy` 头配置选项
    • 1. 不安全的策略
      • `no-referrer-when-downgrade`
      • `unsafe-url`
    • 2. 安全的策略
      • `no-referrer`
      • `origin`
      • `origin-when-cross-origin`
      • `same-origin`
      • `strict-origin`
      • `strict-origin-when-cross-origin`
  • 推荐配置
    • Nginx 配置示例
  • 在 Nginx 中配置 `Referrer-Policy`
    • 配置示例
  • 总结

在这里插入图片描述


概述

在这里插入图片描述


原因分析

Referrer Policy(引用策略)是 Web 应用程序的一个关键配置,用于定义浏览器在向目标网站发送请求时,如何处理并发送 Referer 头信息。Referer 头可能包含敏感信息(例如:用户名、密码、文件路径、页面 URL 等),如果没有正确配置 Referrer-Policy,这些信息可能被暴露给跨站点(第三方)请求,从而导致安全漏洞。

不正确的配置(例如使用 no-referrer-when-downgradeunsafe-url)可能会导致:

  • 敏感信息泄露:例如,包含敏感信息的 URL 可能会被无意间暴露给第三方网站。
  • 跨站点泄漏:如果不适当地泄露了 Referer,其他站点可能会获得该敏感数据。
  • 攻击者利用信息:例如,攻击者通过分析泄露的 Referer 信息,可能会获得关于用户身份、账户、甚至敏感资源的线索,从而进行攻击。

风险说明

在这里插入图片描述

  1. 敏感数据泄露

    • 如果 Referrer-Policy 配置不当,用户在浏览页面时,URL 地址中可能会暴露敏感信息(如用户名、密码、身份标识符、路径信息等),这些信息可能会通过 Referer 头发送到外部站点。
    • 特别是在 HTTP 到 HTTPS 跳转或跨站点请求时,URL 中的敏感数据可以被泄露,进一步加大了信息泄露的风险。
  2. 用户信任受损

    • 防备心不强的用户在网站上提供敏感信息(如信用卡号、社会保险号等)时,若系统没有正确保护其数据隐私(如通过不安全的 Referer 配置泄露了敏感信息),可能会引发信任危机。
  3. 潜在的跨站点攻击

    • 不正确的 Referrer-Policy 使得敏感信息可以通过 Referer 头泄漏给不受信任的第三方站点,这可能会为攻击者提供利用跨站点漏洞(如 CSRF、XSS 等)的机会。

Referrer-Policy 头配置选项

"no-referrer-when-downgrade""unsafe-url" 是泄露第三方网站完整 URL 的策略,它们可能导致敏感信息泄漏。

1. 不安全的策略

no-referrer-when-downgrade

  • 定义:当请求从 HTTPS 协议降级到 HTTP 时,不会发送 Referer 头;但在其他情况下(包括 HTTPS 到 HTTPS,HTTP 到 HTTP),仍会发送完整的 Referer 头。
  • 风险
    • 当从 HTTPS 页面跳转到 HTTP 页面时,浏览器不会发送 Referer 头,以防泄露信息。
    • 然而,在 HTTPS 到 HTTPS 或 HTTP 到 HTTP 的情况下,Referer 头会包含完整的 URL(包括路径和查询参数),这可能会泄露敏感数据。
    • 该策略不能完全保护隐私,尤其是跨站点的情况。

unsafe-url

  • 定义:始终发送完整的 Referer 头,包括 URL 的协议、主机、路径和查询参数,无论目标页面的协议如何。
  • 风险
    • 这种配置会导致 Referer 头泄漏所有请求的详细信息,包括路径和查询字符串。
    • 即使请求从 HTTPS 页面跳转到 HTTP 页面,浏览器仍会发送完整的 URL,这可能会导致敏感信息(如会话 ID、用户数据等)泄漏。
    • 强烈不建议使用该策略,尤其在涉及敏感数据的站点上。

2. 安全的策略

与上述不安全的策略相比,以下是一些更为安全的 Referrer-Policy 配置,能够有效防止敏感信息泄漏。

no-referrer

  • 定义:完全禁止浏览器发送 Referer 头。
  • 优点
    • 提供最高级别的隐私保护,不会泄露任何来源信息。
    • 防止所有跨站点的 Referer 泄露。
  • 缺点
    • 对某些需要依赖 Referer 信息的功能(例如,分析或日志记录)会有影响。
    • 如果网站内部的某些操作依赖于 Referer,则需要考虑是否适合使用该策略。

origin

  • 定义:仅发送请求的源(域名),而不包含路径和查询参数。
    • 例如,Referer: https://example.com/ 而不是 https://example.com/path?query=param
  • 优点
    • 只泄露源(域名),不泄露路径或查询字符串,适合保护用户隐私。
  • 缺点
    • 适用于需要保护隐私的跨站点请求,但在某些情况下,源信息可能不足以满足需要跟踪源的应用程序需求。

origin-when-cross-origin

  • 定义:当请求是同源请求时,发送完整的 Referer 头(包括路径和查询参数);当请求是跨站点请求时,仅发送源(域名)。
  • 优点
    • 为同源请求提供完全的 Referer 信息,而对于跨站点请求则仅泄露源信息,最大限度地减少跨站点泄露敏感信息的风险。
    • 推荐用于保护隐私并确保同源请求的正常运作。
  • 缺点
    • 对跨站点请求仍然可能会限制某些分析或跟踪功能,但在隐私和安全性方面提供了更好的平衡。

same-origin

  • 定义:只有在请求目标与当前页面同源时,才会发送 Referer 头。跨站点请求将不发送 Referer
  • 优点
    • 最大限度地保护跨站点隐私,完全防止了跨站点泄漏 Referer 信息。
  • 缺点
    • 对于跨站点请求(如 API 调用),无法发送 Referer 信息,这可能影响一些站点功能(如跨站点资源共享等)。

strict-origin

  • 定义:只有在请求的目标是安全站点(即 HTTPS)并且协议一致时,才发送 Referer 头。对跨站点请求的保护比 origin 更严格。
  • 优点
    • 对跨站点请求有更强的隐私保护,确保只有同协议的请求会发送源信息。
  • 缺点
    • 如果目标站点使用的是 HTTP 协议,甚至源信息也不会被发送。

strict-origin-when-cross-origin

  • 定义:如果请求是同源请求,则发送完整的 Referer 头;如果请求是跨站点请求,则仅发送源(域名);且目标站点需要使用 HTTPS 协议时才会发送 Referer
  • 优点
    • 这是目前最为推荐的策略,在保证跨站点隐私的同时,允许同源请求发送完整的 Referer 信息。即使是跨站点请求,也只会泄露源信息,并且只有目标是安全的 HTTPS 网站时,才会发送 Referer 信息。
    • 提供了对隐私的最大保护,同时不会干扰正常功能。
  • 缺点
    • 对于不使用 HTTPS 的目标站点,Referer 信息将不被发送。

推荐配置

对于大多数站点,strict-origin-when-cross-origin 是最佳选择,因为它在保障隐私和安全的同时,不会对大多数跨站点请求产生负面影响。

Nginx 配置示例

http {add_header Referrer-Policy "strict-origin-when-cross-origin" always;
}
  • 不安全的策略(如 no-referrer-when-downgradeunsafe-url)会泄漏敏感信息,尤其是在跨站点请求时。
  • 推荐的策略(如 strict-origin-when-cross-originorigin-when-cross-origin)能够在保持功能正常的同时,最大限度地保护用户隐私。
  • 配置 Referrer-Policy 头是 Web 安全的重要措施,确保适当配置可以降低泄漏敏感数据的风险。

在 Nginx 中配置 Referrer-Policy

可以通过在 Nginx 配置中设置适当的 Referrer-Policy 来避免泄漏敏感信息。

配置示例

  1. 全局设置

    http {add_header Referrer-Policy "strict-origin-when-cross-origin" always;
    }
    
  2. 虚拟主机设置

    server {listen 80;server_name example.com;add_header Referrer-Policy "strict-origin-when-cross-origin" always;# 其他配置...
    }
    
  3. 特定路径设置

    server {listen 80;server_name example.com;location /some-path/ {add_header Referrer-Policy "no-referrer" always;}# 其他配置...
    }
    

总结

  • Referrer-Policy 头是防止敏感数据泄露的有效工具。合理配置此头可以保护用户隐私,防止跨站点泄露敏感信息。
  • 避免使用不安全的策略,如 no-referrer-when-downgradeunsafe-url,并优选使用 strict-origin-when-cross-origin 或更严格的策略。
  • 定期检查并更新你的 Web 应用配置,确保所有安全头都已正确设置,以减少潜在的安全风险。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/501573.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ROS导航使用贝塞尔曲线对全局路径进行平滑处理

文章目录 前言一、贝塞尔曲线的使用二、全局路经修改三、结果对比 前言 ROS原生的全局路径规划GlobalPlanner包含A*和Dijkstra,两者原理基本相同,能够规划出从起点到终点的路径,但是由于栅格地图存在锯齿形,得到的全局路径也会出…

解决uniapp H5页面限制输入框只能输数字问题

工作记录 最最近在做 uniapp 开发的移动端 H5 页面,有个需求是金额输入框只能输入数字,不能输入小数点和其他字符,经过各种尝试,发现其他字符可以通过正则过滤掉,但是输入小数点的话,因为没有触发 input 和…

DC-2 靶场渗透

目录 环境搭建 开始渗透 扫存活 扫端口 扫服务 看一下80端口 看一下指纹信息 使用wpscan扫描用户名 再使用cewl生成字典 使用wpscan爆破密码 登陆 使用7744端口 查看shell rbash绕过 切换到jerry用户 添加环境变量 现在可以使用su命令了 提权 使用git提权 环…

如何逐步操作vCenter修改DNS服务器?

在vSphere 7中有一个新功能,它允许管理员更改vCenter Server Appliance的FQDN和IP。因此本文将介绍如何轻松让vCenter修改DNS服务器。 vCenter修改DNS以及修改vCenter IP地址 与在部署 vCenter Server Appliance 后,您可以根据需要修改其 DNS 设置和 IP…

Qt qtcreator配置cmake

添加CMake 选择 Preferences > CMake > Tools. 可以将其设置为默认,如此新建的kit会自动选择默认cmake 完成CMake 代码(自动补全) Qt Creator 使用通用高亮为 CMake 命令提供代码完成的特定参数。例如,CMake: set_source_…

JeeSite 快速开发平台:全能企业级快速开发解决方案|GitCode 光引计划征文展示

投稿人GitCode ID:thinkgem 光引计划投稿项目介绍 JeeSite 快速开发平台,不仅仅是一个后台开发框架,它是一个企业级快速开发解决方案,后端基于经典组合 Spring Boot、Shiro、MyBatis,前端采用 Beetl、Bootstrap、Admi…

大模型系列17-RAGFlow搭建本地知识库

大模型系列17-RAGFlow搭建本地知识库 安装ollama安装open-wehui安装并运行ragflowRAG(检索、增强、生成)RAG是什么RAG三过程RAG问答系统构建步骤向量库构建检索模块生成模块 RAG解决LLM的痛点 使用ragflow访问ragflow配置ollama模型添加Embedding模型添加…

迟来的前端面试经验

最近也是在换工作,小公司和大厂(虾皮、腾讯)都有面试。几次面试收获还是比较大的,了解许多自己的短板,当然也拿到了合适的offer。本文主要整理下面试遇到的问题和知识点,希望对准备找工作的掘友有所帮助。 …

DepthLab: From Partial to Complete 论文解读

目录 一、概述 二、相关工作 1、深度补全 2、单目深度估计 3、已知部分深度的下游任务 三、DepthLab 1、总论 2、编码器和解码器 3、Estimation U-Net 4、Reference U-Net 四、训练操作 1、深度归一化 2、掩模策略 五、数据集 1、训练数据集 2、评估数据集 六、…

直播预告丨社区年度交流会 《RTE 和 AI 融合生态洞察报告 2024》发布

新的一年开始,是时候再深度交流一次了!欢迎关注 1 月 4 日周六晚 社区年度交流会的 线上直播 。 这将是一群 实时多模态 AI 开发者 的聚会。 我们将一起探讨 Voice Agent 在 AI 陪伴助手、AI 硬件和 AI 企业服务等应用场景中的技术突破与产品创新。同时…

RP2K:一个面向细粒度图像的大规模零售商品数据集

这是一种用于细粒度图像分类的新的大规模零售产品数据集。与以往专注于相对较少产品的数据集不同,我们收集了2000多种不同零售产品的35万张图像,这些图像直接在真实的零售商店的货架上拍摄。我们的数据集旨在推进零售对象识别的研究,该研究具…

实战设计模式之建造者模式

概述 在实际项目中,我们有时会遇到需要创建复杂对象的情况。这些对象可能包含多个组件或属性,而且每个组件都有自己的配置选项。如果直接使用构造函数或前面介绍的工厂方法来创建这样的对象,可能会导致以下两个严重问题。 1、参数过多。当一个…

我的博客年度之旅:感恩、成长与展望

目录 感恩有你 技能满点 新年新征程 嘿,各位技术大佬、数码潮咖还有屏幕前超爱学习的小伙伴们!当新年的钟声即将敲响,我们站在时光的交汇点上,回首过往,满心感慨;展望未来,豪情满怀。过去的这…

聆听音乐 1.5.9 | 畅听全网音乐,支持无损音质下载

聆听音乐手机版是面向广大音乐爱好者的移动应用程序,用户可以随时随地通过手机享受丰富的音乐资源。它提供了多种魅力功能,让用户在手机上畅享更舒适的音乐体验,每位用户都能享受精彩纷呈的收听体验。此外,软件还支持无损音质音乐…

GRU-PFG:利用图神经网络从股票因子中提取股票间相关性

“MCI-GRU: Stock Prediction Model Based on Multi-Head Cross-Attention and Improved GRU” 论文地址:https://arxiv.org/pdf/2410.20679 摘要 金融市场因复杂性及大数据时代的来临,使得准确预测股票走势变得尤为重要。传统的时序分析模型&#xff0…

Leetcode 第426场周赛分析总结

3370. 仅含置位位的最小整数 AC代码 class Solution { public:int smallestNumber(int n) {int x 1;while (x - 1 < n) {x << 1;}return x - 1;} };分析总结 也可以先直接获取n的长度&#xff0c;然后计算得到&#xff0c;这样时间复杂度由O(logn)优化为O(1) 在C…

在 SQL 中,区分 聚合列 和 非聚合列(nonaggregated column)

文章目录 1. 什么是聚合列&#xff1f;2. 什么是非聚合列&#xff1f;3. 在 GROUP BY 查询中的非聚合列问题示例解决方案 4. 为什么 only_full_group_by 要求非聚合列出现在 GROUP BY 中&#xff1f;5. 如何判断一个列是聚合列还是非聚合列&#xff1f;6. 总结 在 SQL 中&#…

C++ —— 智能指针

内存泄漏 什么是内存泄漏&#xff0c;内存泄漏的危害 什么是内存泄漏&#xff1a;内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内 存泄漏并不是指内存在物理上的消失&#xff0c;而是应用程序分配某段内存后&#xff0c;因为设计错误&#xff0c;失去…

Ethernet 系列(12)-- 基础学习::SOME/IP

目录 1. SOME/IP简介&#xff1a; 1.1 什么是SOME/IP&#xff1a; 1.2 什么时候使用SOME/IP&#xff1a; 2. SOME/IP的特点&#xff1a; 2.1 序列化&#xff1a; 2.2 远程过程调用&#xff08;RPC&#xff09;: 2.3 服务发现&#xff1a; 2.4 发布/订阅&#xff1a; 2.5 UDP消息…

UE5.3 虚幻引擎 Windows插件开发打包(带源码插件打包、无源码插件打包)

0 引言 随着项目体量的增大&#xff0c;所有代码功能都放一起很难管理。所以有什么办法可以将大模块划分成一个个小模块吗。当然有&#xff0c;因为虚幻引擎本身就遇到过这个问题&#xff0c;他的解决办法就是使用插件的形式开发。 例如&#xff0c;一个团队开发了文件I/O模块插…