【Web技术】如何处理浏览器中的第三方cookie阻止
许多浏览器会阻止第三方cookie,即对浏览器地址栏中显示的域以外的域的请求。这些cookie也称为跨域cookie。此块打破了隐式流,需要新的身份验证模式才能成功登录用户。在Microsoft身份平台中,我们使用带有代码交换验证密钥【Proof Key for Code Exchange】(PKCE)的授权流和刷新令牌,以在第三方cookie被阻止时保持用户登录。
什么是智能跟踪保护(ITP)和隐私沙盒?
Apple Safari有一个默认的隐私保护功能,称为智能跟踪保护(ITP)。Chrome有一个名为“隐私沙盒”的浏览器隐私倡议。这些举措涵盖了浏览器的许多不同的浏览器隐私努力,并具有不同的时间表。这两项工作都会阻止跨域请求的“第三方”cookie,Safari和Brave默认会阻止第三方cookie。Chrome最近宣布,他们将开始默认屏蔽第三方cookie。隐私沙盒包括对分区存储的更改以及第三方cookie阻止。
一种常见的用户跟踪方式是在后台将iframe加载到第三方网站,并使用cookie在互联网上关联用户。不幸的是,这种模式也是在单页应用程序(SPA)中实现隐式流的标准方式。阻止第三方cookie以保护用户隐私的浏览器也可以阻止SPA的功能。
【Web技术】在父窗口和子iframe之间发送数据-PostMessage API
Post Message API的替代方案
Channel Messaging API是PostMessage API的一个非常好的替代方案,具有某些优势,如速度和易用性。因此,如果您想跨上下文传输大型JavaScript对象,您可能需要考虑使用Channel Messaging API。如果你想看的话,我有一篇很好的文章和一个演示。
将数据从一个上下文发送到另一个上下文
使用JavaScript,您可以在上下文(即主窗口)之间向iframe传递数据,反之亦然。如果您的主窗口打开了一个新选项卡,您可以将数据从主窗口发送到新选项卡,即使用postMessage()和Channel Messaging API进行跨窗口通信和数据传输。在这篇文章中,我们将只讨论postMessage API。
让我们现实一点——一些上下文之间交流的例子和所有可能的上下文列表
1.从父窗口向子iframe发送数据:
让我们看看如何将一些数据从父窗口发送到子iframe。
【Web技术】CHIPS(具有独立分区状态的Cookie)
【Web技术】存储访问策略:阻止跟踪器的cookie
Firefox包含一个新的存储访问策略,可以阻止来自第三方跟踪资源的cookie和其他网站数据。此策略被设计为旧cookie策略的替代方案,旧cookie策略在Firefox中已经存在多年。此策略可防止跨站点跟踪,同时最大限度地减少与传统cookie阻止相关的站点破坏。本文介绍了该策略的工作原理以及如何对其进行测试。
在Firefox中测试
此cookie策略自63版起在Firefox中可用。本文档描述了我们打算向Firefox Release用户提供的策略,但可能与当前版本的Firefox中实现的策略不匹配。这是因为一旦政策的新方面登陆我们的预发布频道Firefox Nightly,我们就会记录下来。Firefox Nightly也可能包含我们尚未计划向Release用户提供的实验功能;实验特性将不包括在本文档中,但可能会影响分类为跟踪器的域的功能。
我们建议网站使用Firefox Nightly进行测试,因为这包括我们最新版本的保护。如上所述,请注意,Nightly可能包括额外的保护措施,这些保护措施最终会在我们的发布用户收到之前被删除或更改。随着我们加强保护,我们将不断更新此页面的最新信息。
【Web技术】状态分区
状态分区是Mozilla的一项广泛努力,旨在重新设计Firefox管理客户端状态(即存储在浏览器中的数据)的方式,以减少网站滥用状态进行跨站点跟踪的能力,即通过third-party cookies.。
这项工作旨在通过为用户访问的每个网站提供分区存储位置来实现这一点。本文概述了该机制,列出了受影响的API,并解释了如何调试受影响的站点。
默认情况下,状态分区当前在Firefox Nightly频道中处于打开状态。自85版本以来,Firefox的发布通道默认启用了状态分区工作的一个子集(即网络分区)。
【Web技术】具有独立分区状态的Cookie(CHIPS)
实验:这是一项实验技术
在生产中使用之前,请仔细检查浏览器兼容性表。
具有独立分区状态的cookie(CHIPS,也称为分区cookie)允许开发人员将cookie选择到分区存储中,每个顶级网站都有一个单独的cookie罐。
在没有cookie分区的情况下,第三方cookie可以使服务跟踪用户,并在不相关的顶级网站上关联他们的信息。标记为Partitioned的Cookie是双重键控的:通过设置它们的原点和顶级页面的原点。
这意味着它们只能在设置的顶级站点的上下文中读取。这允许阻止跨站点跟踪,同时仍然允许合法使用第三方cookie,如在不同站点之间保持嵌入式地图或聊天小部件的状态,以及保持子资源CDN负载平衡和无头CMS提供商的配置信息。
CHIPS是如何工作的?
为了理解CHIPS是如何工作的,让我们看一个简单的例子。从历史上看,当网站通过<iframe>嵌入内容时,嵌入的内容能够在用户的设备上设置cookie以响应跨网站请求。如果用户访问了嵌入相同内容的其他网站,则嵌入内容可以访问由嵌入内容的第一个实例最初设置的相同cookie。这使内容所有者能够跟踪这些网站以及嵌入相同内容的任何其他网站的用户活动。
【Web技术】网络隐私
人们使用网站执行一些重要任务,如银行、购物、娱乐和纳税。在这样做的过程中,他们被要求与这些网站共享个人信息。用户对与其共享数据的网站有一定程度的信任。如果这些信息落入坏人之手,它可能会被用来剥削用户,例如对他们进行剖析,用不需要的广告针对他们,甚至窃取他们的身份或金钱。
现代浏览器已经拥有丰富的功能来保护用户在网络上的隐私,但这还不够。为了创造一个值得信赖和尊重隐私的体验,开发者需要教育他们的网站用户良好的做法(并强制执行)。开发人员还应该创建网站,尽可能少地从用户那里收集数据,负责任地使用数据,并安全地传输和存储数据。
在本文中,我们:
- 定义隐私和重要的相关术语。
- 检查自动保护用户隐私的浏览器功能。
- 看看开发人员可以做些什么来创建尊重隐私的网络内容,最大限度地降低用户的个人信息/数据被第三方意外获取的风险。
定义隐私条款和概念
在我们研究网络上可用的各种隐私和安全功能之前,让我们定义一些重要的术语。
【Web技术】围栏框架API
实验:这是一项实验技术
在生产中使用之前,请仔细检查浏览器兼容性表。
fencedframe API提供了用于控制<fencedframe>元素中嵌入的内容的功能。
概念和用法
网络上隐私和安全问题的一个主要来源是嵌入<iframe>元素中的内容。历史上,<iframe>被用于设置第三方cookie,该cookie可用于跨站点共享信息和跟踪用户。此外,<iframe>中嵌入的内容可以与其嵌入文档进行通信(例如,使用Window.postMessage())。
嵌入文档还可以使用脚本从<iframe>中读取各种形式的信息——例如,从src属性中读取嵌入的URL可能会获得重要的跟踪/指纹数据,尤其是当它包含URL参数时。<iframe>还可以访问嵌入上下文的DOM,反之亦然。
大多数现代浏览器都在研究对存储进行分区的机制,这样cookie数据就不能再用于跟踪(例如,请参阅cookie具有独立分区状态(CHIPS)或Firefox状态分区)。
【Web技术】凭证管理API
安全上下文:此功能仅在安全上下文(HTTPS)、某些或所有支持的浏览器中可用。
凭证管理API使网站能够创建、存储和检索凭证。凭证是使系统能够做出身份验证决定的项目:例如,决定是否将用户登录到帐户。我们可以将其视为用户向网站提供的一项证据,以证明他们真的是他们所声称的那个人。
概念和用法
中心接口是CredentialsContainer,它可以通过navigator.credentials属性访问,并提供三个主要功能:
- create():创建一个新凭据。
- store():在本地存储一个新凭据。
- get():检索一个凭据,然后可以使用该凭据登录用户。
API支持四种不同类型的凭证,它们都表示为凭证的子类:
【Web安全】网站安全
网站包含几种不同类型的信息。其中一些是非敏感的,例如公共页面上显示的副本。其中一些是敏感的,例如客户用户名、密码和银行信息,或者内部算法和私人产品信息。
敏感信息需要得到保护,这是网络安全的重点。如果这些信息落入坏人之手,可能会被用来:
- 通过与竞争对手共享信息,使公司处于竞争劣势。
- 禁用或劫持他们的服务,再次导致他们的操作出现严重问题。
- 将客户的隐私置于危险之中,使他们容易受到分析、定位、数据丢失、身份盗窃甚至经济损失的影响。
现代浏览器已经有几个功能来保护用户在网络上的安全,但开发人员也需要谨慎地采用最佳实践和代码,以确保他们的网站是安全的。即使是代码中的简单错误也会导致漏洞,坏人可以利用这些漏洞窃取数据并控制他们没有授权的服务。
本文介绍了网络安全,包括有助于您了解网站易受攻击的方面以及如何保护网站的信息。
安全与隐私的关系
安全和隐私是不同的主题,但它们也密切相关。了解两者之间的区别以及它们之间的关系是值得的。