当前位置: 首页 > news >正文

深入解析 Web 应用中的 CHIPS(Partitioned Cookie Attribute)

深入解析 Web 应用中的 CHIPS(Partitioned Cookie Attribute)

最新发现flask3.1.0 的版本引入了新的特性:对CHIPS的支持。不少同学对这个可能有点陌生,本文带大家了解一下。

为了在隐私保护和功能需求之间取得平衡,Google 推出了 CHIPS(Cookies Having Independent Partitioned State) 标准。它通过引入 Partitioned Cookie Attribute,允许跨站点环境下的独立 Cookie 存储,为特定场景提供隐私友好的解决方案。


一、CHIPS 的起源

传统的 Cookie 存储机制包括 第一方 Cookie第三方 Cookie

  • 第一方 Cookie:由用户访问的站点设置,用于会话管理、用户偏好等。
  • 第三方 Cookie:由嵌入到站点中的第三方资源(如广告或分析脚本)设置,用于跨站跟踪。

由于隐私问题,浏览器开始逐步限制第三方 Cookie。例如:

  • Safari 的 Intelligent Tracking Prevention (ITP)
  • Firefox 的 Enhanced Tracking Protection (ETP)
  • Chrome 的计划(Privacy Sandbox)将逐步淘汰第三方 Cookie。

然而,限制第三方 Cookie 会导致某些合法的跨站点功能失效,例如嵌入式服务的会话保持。为了满足这些场景的需求,CHIPS 应运而生。


二、CHIPS 的目的

CHIPS 的主要目标是为跨站点环境下的 Cookie 存储提供一种隐私友好的解决方案:

  1. 隐私保护:通过分区存储,避免第三方 Cookie 被用于跨站追踪。
  2. 功能性支持:允许跨站点场景(如嵌入式内容)拥有独立的 Cookie 存储,不受其他站点的干扰。
  3. 兼容性:减少浏览器对传统跨站点功能的影响,确保用户体验。

三、CHIPS 的设计

CHIPS 的核心设计是引入了 Partitioned 属性,用于定义 Cookie 的存储隔离规则:

1. 分区机制

  • 在跨站点请求中,浏览器为每个 Top-Level Origin(顶级站点)Embedded Origin(嵌入站点) 创建独立的 Cookie 分区。
  • 分区的关键由 (Top-Level Origin, Embedded Origin) 组成。例如:
    • 用户在 example.com 页面嵌入了 iframe.analytics.com
    • 分区后,analytics.comexample.com 中的 Cookie 不会与 analytics.com 在其他站点的 Cookie 冲突。

2. Partitioned 属性

CHIPS 的关键属性是 Partitioned,它必须与 SameSite=None; Secure 一起使用。示例:

Set-Cookie: user_session=abc123; Path=/; Secure; SameSite=None; Partitioned
  • Secure:必须通过 HTTPS 设置。
  • SameSite=None:允许跨站点访问。
  • Partitioned:指定 Cookie 为分区 Cookie。

四、CHIPS 的工作原理

  1. 设置 Partitioned Cookie

    • 在 HTTP 响应头中返回带有 Partitioned 属性的 Cookie。
    • 浏览器将为特定的 (Top-Level Origin, Embedded Origin) 创建独立的 Cookie 存储。
  2. 存储和检索

    • 当用户访问 example.com 页面,嵌入的 iframe.analytics.com 会使用其自己的 Cookie 分区。
    • 即使用户访问其他顶级站点(如 another.com)也嵌入了 iframe.analytics.com,它的 Cookie 状态是独立的。
  3. 隐私保证

    • Cookie 的分区存储仅限于当前顶级站点上下文,无法用于跨站追踪。

五、CHIPS 的实际应用

1. 嵌入式第三方服务

场景:嵌入到站点的第三方支付、聊天工具等需要维持用户的会话状态,但不能访问其他站点的用户信息。

2. 广告网络优化

广告平台可以为每个顶级站点独立存储用户的点击数据,避免与其他站点数据混合。

3. 分析工具

像 Google Analytics 这样的工具可以使用 Partitioned Cookie 来跟踪同一顶级站点内的用户活动,同时避免跨站点的隐私问题。


六、如何在后端使用 CHIPS

以下是使用 Python 的 Web 框架(Flask 和 Django)的示例,展示如何在后端设置 Partitioned Cookie。

1. Flask 示例

from flask import Flask, make_responseapp = Flask(__name__)@app.route('/')
def set_cookie():response = make_response("Partitioned Cookie Set!")# 设置 Partitioned Cookieresponse.set_cookie('user_session', 'abc123', path='/', secure=True, samesite='None', httponly=True)response.headers.add('Set-Cookie', 'user_session=abc123; Path=/; Secure; SameSite=None; Partitioned')return responseif __name__ == '__main__':app.run(ssl_context='adhoc')

2. Django 示例

from django.http import HttpResponsedef set_cookie(request):response = HttpResponse("Partitioned Cookie Set!")response.set_cookie('user_session','abc123',path='/',secure=True,samesite='None',httponly=True)# 手动添加 Partitioned 属性response['Set-Cookie'] = 'user_session=abc123; Path=/; Secure; SameSite=None; Partitioned'return response

七、如何在前端使用 CHIPS

前端开发者需要确保以下几点:

  1. 确保通过 HTTPS 加载页面和嵌入内容Secure 属性要求 Cookie 只能通过 HTTPS 传输。
  2. 正确配置 SameSite 属性:必须设置为 SameSite=None
  3. 加载 iframe 或嵌入资源时传递 Cookie
    • 使用 <iframe> 标签时,需指定 allow 属性:
      <iframe src="https://analytics.com" allow="partitioned-cookies"></iframe>
      
    • 或在 fetch 请求中指定 credentials: 'include'
      fetch('https://analytics.com/data', {credentials: 'include'
      });
      

八、CHIPS 的优势与局限性

优势

  1. 隐私友好:解决了跨站点 Cookie 滥用问题。
  2. 支持合法跨站场景:如嵌入式服务、支付网关等。
  3. 与现代隐私政策兼容:符合 GDPR 等隐私法规的要求。

局限性

  1. 浏览器兼容性:目前仅部分现代浏览器支持 CHIPS。
  2. 复杂性增加:开发者需要额外配置 Cookie 和跨站请求。

九、总结

CHIPS 提供了一种隐私友好的跨站点 Cookie 管理方式,通过分区存储解决了传统第三方 Cookie 的隐私问题。在 Web 应用中,开发者可以通过后端设置带有 Partitioned 属性的 Cookie,并在前端正确传递和管理这些 Cookie,实现安全可靠的跨站功能。

随着 Web 隐私标准的不断演进,CHIPS 将成为构建现代 Web 应用的关键工具之一。如果你的应用需要支持跨站场景,赶快尝试使用 CHIPS 优化隐私和功能吧!

相关文章:

深入解析 Web 应用中的 CHIPS(Partitioned Cookie Attribute)

深入解析 Web 应用中的 CHIPS&#xff08;Partitioned Cookie Attribute&#xff09; 最新发现flask3.1.0 的版本引入了新的特性&#xff1a;对CHIPS的支持。不少同学对这个可能有点陌生&#xff0c;本文带大家了解一下。 为了在隐私保护和功能需求之间取得平衡&#xff0c;Goo…...

从搭建uni-app+vue3工程开始

技术栈 uni-app、vue3、typescript、vite、sass、uview-plus、pinia 一、项目搭建 1、创建以 typescript 开发的工程 npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project2、安装sass npm install -D sass// 安装sass-loader&#xff0c;注意需要版本10&#xff0c;…...

归并排序与逆序对问题(C语言版)

一、引言 归并排序是一种高效且稳定的排序方法&#xff0c;而逆序对问题是算法领域的一个经典问题&#xff0c;本文教大家如何实现归并排序&#xff0c;以及如何使用归并排序去结果逆序对问题 二、归并排序 归并排序思想 分解&#xff1a;将待排序的数组分成两半&#xff0c…...

网络爬虫总结与未来方向

通过深入学习和实际操作&#xff0c;网络爬虫技术从基础到进阶得以系统掌握。本节将全面总结关键内容&#xff0c;并结合前沿技术趋势与最新资料&#xff0c;为开发者提供实用性强的深度思考和方案建议。 1. 网络爬虫技术发展趋势 1.1 趋势一&#xff1a;高性能分布式爬虫 随…...

C++ 核心数据结构:Stack 与 Queue 类深度解析

&#x1f31f;快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。 &#x1f31f; 目录 &#x1f4af;前言 &#x1f4af;Stack 类 &#xff08;一&#xff09;Stack 类的概念与特点 &#xff08;二&#x…...

Python枚举类详解:用enum模块高效管理常量数据

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 在编程中,常量的管理是一个关键环节,合理的管理常量可以提高代码的可读性和可维护性。Python的enum模块提供了一种有效的方式来组织常量数据,通过枚举类(Enum)将相关的常量值集合在一起,使代码更具结…...

企业OA管理系统:Spring Boot技术深度探索

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…...

汽车免拆诊断案例 | 2012款路虎揽胜运动版柴油车加速无力

故障现象  一辆2012款路虎揽胜运动版车&#xff0c;搭载3.0T柴油发动机&#xff08;型号为306DT&#xff09;&#xff0c;累计行驶里程约为10.2万km。车主进厂反映&#xff0c;车辆行驶中加速无力&#xff0c;且发动机故障灯异常点亮。 故障诊断 接车后试车&#xff0c;发动…...

uniapp接入高德地图

下面代码兼容安卓APP和H5 高德地图官网&#xff1a;我的应用 | 高德控制台 &#xff0c;绑定服务选择《Web端(JS API)》 /utils/map.js 需要设置你自己的key和安全密钥 export function myAMap() {return new Promise(function(resolve, reject) {if (typeof window.onLoadM…...

(UI自动化测试)web自动化测试

web自动化测试 UI自动化测试介绍 自动化测试理论&#xff1a; 图片上的文字等等不能做测试&#xff0c;只能发现固定的bug 工具选择及介绍 浏览器驱动&#xff1a;找元素--核心&#xff1a;驱动&#xff08;操作元素&#xff09;--通过代码...

【es6进阶】如何使用Proxy实现自己的观察者模式

观察者模式&#xff08;Observer mode&#xff09;指的是函数自动观察数据对象&#xff0c;一旦对象有变化&#xff0c;函数就会自动执行。这里&#xff0c;我们是使用es6的proxy及reflect来实现这个效果。 实现效果 业务分析 源数据 const object2 {name: "张三"…...

住宅IP怎么在指纹浏览器设置运营矩阵账号

矩阵账号的运营已经成为了许多企业和个人推广策略中的重要一环。通过构建和管理多个社交媒体或电商平台的账号&#xff0c;可以有效地扩大品牌影响力&#xff0c;提高市场覆盖率。然而&#xff0c;随着平台对账号关联的限制越来越严格&#xff0c;如何安全、有效地运营这些矩阵…...

表格数据处理中大语言模型的微调优化策略研究

论文地址 Research on Fine-Tuning Optimization Strategies for Large Language Models in Tabular Data Processing 论文主要内容 这篇论文的主要内容是研究大型语言模型&#xff08;LLMs&#xff09;在处理表格数据时的微调优化策略。具体来说&#xff0c;论文探讨了以下…...

CentOS7 如何查看kafka topic中的数据

1. 确保 Kafka 服务运行 先检查 Kafka 和 Zookeeper 是否正在运行&#xff1a; systemctl status kafka systemctl status zookeeper 如果没有启动&#xff0c;先启动服务&#xff1a; systemctl start zookeeper systemctl start kafka 2. 进入 Kafka 安装目录 通常 …...

VRRP实现出口网关设备冗余备份

VRRP虚拟路由冗余 vrrp实现设备主备备份 Tips&#xff1a; VRRP能够在不改变组网的情况下&#xff0c;将多台路由器虚拟成一个虚拟路由器&#xff0c;通过配置虚拟路由器的IP地址为默认网关&#xff0c;实现网关的备份。协议版本: VRRPV2 (常用)和VRRPV3:VRRPV2仅适用于IPv4…...

超详细:Redis分布式锁

如何基于 Redis 实现一个最简易的分布式锁&#xff1f; 不论是本地锁还是分布式锁&#xff0c;核心都在于“互斥”。 在 Redis 中&#xff0c; SETNX 命令是可以帮助我们实现互斥。SETNX 即 SET if Not eXists (对应 Java 中的 setIfAbsent 方法)&#xff0c;如果 key 不存在…...

Vue与React的Suspense组件对比

在Vue和React中都内置了Suspense组件&#xff0c;该组件用于处理异步组件加载。当Suspense包裹的实际组件内容尚未加载完成时会先展示后备内容&#xff0c;等待组件内容加载完成后再切换成实际组件内容。这可以显著提升用户体验&#xff0c;适用于大数据加载、组件懒加载等场景…...

Spring框架深度剖析:特性、安全与优化

文章目录 Spring框架简介主要特性1. 依赖注入&#xff08;Dependency Injection, DI&#xff09;2. 面向切面编程&#xff08;Aspect-Oriented Programming, AOP&#xff09;3. 声明式事务管理4. 强大的MVC框架5. 集成测试支持6. 多种数据访问技术的支持 安全性1. 认证&#xf…...

硬盘文件误删:全面解析、恢复方案与预防策略

一、硬盘文件误删现象概述 在日常使用电脑的过程中&#xff0c;硬盘文件误删是许多用户都曾遇到过的问题。这种意外的数据丢失&#xff0c;不仅可能让我们辛苦编辑的文档、珍贵的照片和视频等瞬间消失&#xff0c;还可能对工作和生活造成重大影响。硬盘文件误删&#xff0c;如…...

tcpdump抓包 wireShark

TCPdump抓包工具介绍 TCPdump&#xff0c;全称dump the traffic on anetwork&#xff0c;是一个运行在linux平台可以根据使用者需求对网络上传输的数据包进行捕获的抓包工具。 tcpdump可以支持的功能: 1、在Linux平台将网络中传输的数据包全部捕获过来进行分析 2、支持网络层…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术&#xff0c;通过密码学、共识机制和智能合约等核心组件&#xff0c;实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点&#xff1a;数据存储在网络中的多个节点&#xff08;计算机&#xff09;&#xff0c;而非…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!

目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...

Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解

文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一&#xff1a;HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二&#xff1a;Floyd 快慢指针法&#xff08;…...

车载诊断架构 --- ZEVonUDS(J1979-3)简介第一篇

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...

qt+vs Generated File下的moc_和ui_文件丢失导致 error LNK2001

qt 5.9.7 vs2013 qt add-in 2.3.2 起因是添加一个新的控件类&#xff0c;直接把源文件拖进VS的项目里&#xff0c;然后VS卡住十秒&#xff0c;然后编译就报一堆 error LNK2001 一看项目的Generated Files下的moc_和ui_文件丢失了一部分&#xff0c;导致编译的时候找不到了。因…...

[QMT量化交易小白入门]-六十二、ETF轮动中简单的评分算法如何获取历史年化收益32.7%

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。 QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。 文章目录 相关阅读1. 策略概述2. 趋势评分模块3 代码解析4 木头…...

以太网PHY布局布线指南

1. 简介 对于以太网布局布线遵循以下准则很重要&#xff0c;因为这将有助于减少信号发射&#xff0c;最大程度地减少噪声&#xff0c;确保器件作用&#xff0c;最大程度地减少泄漏并提高信号质量。 2. PHY设计准则 2.1 DRC错误检查 首先检查DRC规则是否设置正确&#xff0c;然…...

Ansys Maxwell:线圈和磁体的静磁 3D 分析

本博客展示了如何在 Ansys Maxwell 中执行静磁 3D 分析&#xff0c;以计算载流线圈和永磁体之间相互作用产生的扭矩。在这个例子中&#xff0c;线圈中的电流产生一个沿 Y 轴指向的磁场&#xff0c;而永磁体沿 X 轴被磁化。这种配置导致围绕 Z 轴的扭矩。分步工作流程包括构建几…...