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 应用配置,确保所有安全头都已正确设置,以减少潜在的安全风险。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《计算机组成及汇编语言原理》阅读笔记:p133-p159

《计算机组成及汇编语言原理》学习第 11 天,p133-p159 总结,总计 27 页。 一、技术总结 1.segment (1)定义 Broadly speaking, a contiguous section of memory. More specifically, a section of memory referenced by one of the segment register…

QT-----------GUI程序设计基础

项目配置文件 .pro文件:这是QT项目的核心配置文件,用于指定项目的名称、版本、源文件、头文件、库文件等信息。例如: QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your comp…

爆改RagFlow

爆改RagFlow 一、Rag理论概述二、Ragflow解析参数说明三、♥ RagFlow源码解析核心代码流程梳理1、OCR识别2、版面分析3、parser功能3.1 PdfParser3.1.1 首先,初始化3.1.2 **pdf转图片** [来自工业界的知识库 RAG 服务(二),RagFlow 源码全流程深度解析](h…

实际部署Dify可能遇到的问题:忘记密码、开启HTTPS、知识库文档上传的大小限制和数量限制

背景 前面我们以 docker compose 容器化的方式本地部署了 Dify 社区版,并快速体验了其聊天助手、工作量编排以及智能体(Agent)功能。不过后续实际生产环境使用时遇到了忘记密码、如何开启SSL以支持HTTPS、如何突破知识库文档上传的大小限制和…

Ubuntu安装Apache Airflow详细指南

本文我们介绍如何在Ubuntu上安装Apache Airflow。Apache Airflow旨在通过编程方式编写、调度和监控工作流。随着数据编排在现代数据工程中变得越来越重要,掌握Apache Airflow等工具可以显著提高您的生产力和效率。 学习Apache Airflow的首要任务是安装单机版本进行测…

Learning Multi-Scale Photo Exposure Correction

Abstract 用错误的曝光捕捉照片仍然是相机成像的主要错误来源。曝光问题可分为以下两类:(i)曝光过度,即相机曝光时间过长,导致图像区域明亮和褪色;(ii)曝光不足,即曝光时间过短,导致图像区域变暗。曝光不足和曝光过度都会大大降低…

【python】matplotlib(moon cake)

文章目录 1、Style12、Style23、Style34、Style45、Style56、Style67、Style78、参考的库函数matplotlib.patches.Arcmatplotlib.patches.Wedge 9、参考 1、Style1 """ author: tyran """from numpy import sin, cos, pi import matplotlib.pyp…

node.js卸载并重新安装(超详细图文步骤)

卸载node.js 重新安装nodejs 一、卸载 1、首先进入控制面板卸载程序 2、卸载后 到文件夹中进行进一步的删除 删除上述的几个文件夹 每个人可能不一样,总之是找到自己的nodejs安装路径,下面是我的 ①删除C:UsersAdminAppDataRoaming路径下的npm相关文件…

每天40分玩转Django:Django表单集

Django表单集 一、知识要点概览表 类别知识点掌握程度要求基础概念FormSet、ModelFormSet深入理解内联表单集InlineFormSet、BaseInlineFormSet熟练应用表单集验证clean方法、验证规则熟练应用自定义配置extra、max_num、can_delete理解应用动态管理JavaScript动态添加/删除表…

抽奖2(信奥)

【问题描述】 公司举办年会,为了活跃气氛,设置了摇奖环节。参加聚会的每位员工都有一张带有号码的抽奖券。现在,主持人从小到依次公布了n个不同的获奖号码,小谢看着自己抽奖券上的号码win,无比紧张。请编写一个程序&am…

JWT包中的源码分析【Golang】

前言 最近在学web编程的途中,经过学长提醒,在进行登陆(Login)操作之后,识别是否登陆的标识应该要放入authorization中,正好最近也在学鉴权,就顺便来看看源码了。 正文 1. 代码示例 在进行分…

Airbnb/Booking 系统设计(high level architecture)

原文地址 CodeKarle: Airbnb System Design | Booking.com System Design B站搜 “Airbnb System Design” 有视频版本 需求: 功能性需求 系统用户包括商家和客人。 Hotel - 商家(拥有hotel的人) onboarding - 商家可以入住系统。 update…

windows系统安装完Anaconda之后怎么激活自己的虚拟环境并打开jupyter

1.在win主菜单中找到Anaconda安装文件夹并打开终端 文件夹内有所有安装后的Anaconda的应用软件和终端窗口启动窗口 点击Anaconda Prompt(Anaconda)就会打开类似cmd的命令终端窗口,默认打开的路径是用户名下的路径 2.激活虚拟环境 使用命令…

C++进阶(三)--多态

目录 一、多态的基本概念 1.什么是多态 二、多态的定义及实现 1.虚函数 2.虚函数的重写 3.虚函数重写的⼀些其他问题 协变(了解) 析构函数的重写 C11 override和final 4.重载、覆盖(重写)、隐藏(重定义)的对比 三、抽象类 1.纯虚函数 2.接口继承和实现继承 四、多…

2025经典的软件测试面试题(答案+文档)

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 以下是软件测试相关的面试题及答案,希望对各位能有帮助! 1、测试分为哪几个阶段? 一般来说分为5个阶段:单元测试、集成测试…

海南省首套数据资产化系列团体标准正式发布

近日,首套数据资产化系列团体标准正式发布。本次系列涵盖《数据资产 数据治理规范》、《数据资产数据质量评价规范》、《数据资产 数据评估定价办法》和《数据资产 入表流程规范化标准》四项团体标准,通过海南省人工智能学会面向行业发布,自2…

突发!GitLab(国际版)将停止对中国区用户提供 GitLab.com 账号服务

消息称: 目前,为了更加严格的遵循中国网络数据安全管理的相关要求,GitLab SaaS(国际版)已逐步停止向国内用户提供服务与支持,国内用户亦无法注册或使用 GitLab SaaS(国际版)。自您的…

LLaVA模型讲解与总结

系列文章目录 第一章:LoRA微调系列笔记 第二章:Llama系列关键知识总结 第三章:LLaVA模型讲解与总结 文章目录 系列文章目录LLaVA(Large Language and Vision Assistant)Q: 这篇论文试图解决什么问题?Q: 论…

【linux内核分析-存储】EXT4源码分析之“创建文件”原理

EXT4源码分析之“文件创建”原理,详细的介绍文件创建的核心流程,并对EXT4中关于文件创建的关键函数进行了分析。 文章目录 0.前言1.创建文件概览1.1关键流程1.2 关键步骤说明 2.源码分析2.1 入口函数ext4_create2.2 分配inode关键函数 ext4_new_inode_st…

自学记录鸿蒙 API 13:骨骼点检测应用Core Vision Skeleton Detection

骨骼点检测技术是一项强大的AI能力,能够从图片中识别出人体的关键骨骼点位置,如头部、肩部、手肘等。这些信息在人体姿态分析、动作捕捉、健身指导等场景中有着广泛应用。我决定深入学习HarmonyOS Next最新版本API 13中的Skeleton Detection API&#xf…