自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳解 Cookie 新增的 SameParty 屬性

開(kāi)發(fā) 前端
各大主流瀏覽器正在逐步禁用 三方Cookie ,之前筆者也在下面這篇文章中分析了全面禁用 三方Cookie 后對(duì)我們的網(wǎng)站帶來(lái)的一些影響。

各大主流瀏覽器正在逐步禁用 三方Cookie ,之前筆者也在下面這篇文章中分析了全面禁用 三方Cookie 后對(duì)我們的網(wǎng)站帶來(lái)的一些影響:

當(dāng)瀏覽器全面禁用三方 Cookie

但是一個(gè)公司或組織往往在不同業(yè)務(wù)下會(huì)有多個(gè)不同的域名,例如 taobao.com、tianmao.com,所以很多正常的業(yè)務(wù)場(chǎng)景也許要借助 三方Cookie 來(lái)實(shí)現(xiàn)(比如 單點(diǎn)登錄和 consent管理),直接禁用后可能會(huì)給我們的業(yè)務(wù)帶來(lái)很大影響,而且之前一直以來(lái)都沒(méi)有很好的解決方案,這也是 Chrome 禁用 三方Cookie 進(jìn)展非常緩慢的原因。

在 第一方Cookie 和 第三方Cookie 被區(qū)別對(duì)待的情況下,Chrome 新推出了一個(gè) First-Party Sets 策略,它可以允許由同一實(shí)體擁有的不同關(guān)域名都被視為第一方。

這意味著我們可以標(biāo)記打算在同一方上下文共享 Cookie 的不同域名,目的是在防止第三方跨站點(diǎn)跟蹤和仍然保持正常的業(yè)務(wù)場(chǎng)景下之間找到平衡。

    目前 First-Party Sets 策略還沒(méi)有正式在穩(wěn)定版推出,還在試用階段。

一方和三方 Cookie 的區(qū)別

可能很多小伙伴對(duì) 三方Cookie 的概念還比較模糊,我們先來(lái)回顧一下:

Cookie 本質(zhì)上不區(qū)分第一方或第三方,它取決于包含 Cookie 的當(dāng)前上下文。我們還用之前的老例子:

如果是你正常的正在逛著天貓,天貓會(huì)把你的信息寫(xiě)入一些 Cookie 到 .tmall.com 這個(gè)域下,然而打開(kāi)控制臺(tái)你會(huì)看到,并不是所有 Cookie 都是 .tmall.com 這個(gè)域下的,里面還有很多其他域下的 Cookie ,這些所有非當(dāng)前域下的 Cookie 都屬于第三方 Cookie,雖然你可能從來(lái)沒(méi)訪(fǎng)問(wèn)過(guò)這些域,但是他們已經(jīng)悄悄的通過(guò)這些第三方 Cookie來(lái)標(biāo)識(shí)你的信息,然后把你的個(gè)人信息發(fā)送過(guò)去了。

而 .tmall.com 這個(gè)域下的 Cookie 都屬于第一方 Cookie,那么為什么還需要第三方 Cookie 呢?再打開(kāi) taobao.com,你會(huì)發(fā)現(xiàn)你已經(jīng)不需要再登錄了,因?yàn)樘詫?、天貓都屬于阿里旗下的產(chǎn)品,阿里為他們提供統(tǒng)一的登錄服務(wù),同時(shí),你的登錄信息也會(huì)存到這個(gè)統(tǒng)一登錄服務(wù)的域下,所以存到這個(gè)域下的 Cookie 就成了三方 Cookie。

SameSite 的問(wèn)題

Chrome 在之前的版本為 Cookie 新增了一個(gè) SameSite 屬性 來(lái)限制三方 Cookie 的訪(fǎng)問(wèn),在 Chrome 80 版本后 SameSite 的默認(rèn)值被設(shè)定為 SameSite=Lax。

在 Strict 模式下,將阻止所有三方 Cookie 攜帶,這種設(shè)置基本可以阻止所有 CSRF 攻擊,然而,它的友好性太差,即使是普通的 GET 請(qǐng)求它也不允許通過(guò)。

在 Lax 模式下只會(huì)阻止在使用危險(xiǎn) HTTP 方法進(jìn)行請(qǐng)求攜帶的三方 Cookie,例如 POST 方式。同時(shí),使用 JavaScript 腳本發(fā)起的請(qǐng)求也無(wú)法攜帶三方 Cookie。

但是,試用上面兩種模式,我們上面提到的一些正常的需求場(chǎng)景就無(wú)法實(shí)現(xiàn)了,對(duì)于這種 Cookie ,我們現(xiàn)在一般會(huì)手動(dòng)設(shè)置 SameSite=None 。

這意味著這種 Cookie 又失去了跨站點(diǎn)請(qǐng)求偽造 (CSRF) 保護(hù),例如在 evil.site 發(fā)送一個(gè) me.site 的請(qǐng)求,也會(huì)帶上我們的 Cookie。

First-Party Sets 策略

在上面正常的業(yè)務(wù)場(chǎng)景中,所有不同的域名基本上都來(lái)自同一個(gè)組織或企業(yè),我們希望在同一個(gè)運(yùn)營(yíng)主體下不同域名的 Cookie 也能共享。

First-Party Sets 可以定義跨站點(diǎn)上下文仍然是 first-party 的情況。Cookie 可以包含在第一方集合中,也可以排除在第三方上下文中。

First-Party Sets 提出了一種明確定義在同一主體下?lián)碛泻瓦\(yùn)營(yíng)的多個(gè)站點(diǎn)關(guān)系的方法。比如 .tmall.com、taobao.com 都可以被定義為同一主體運(yùn)營(yíng) 。

這個(gè)策略來(lái)源于瀏覽器的隱私沙提案中對(duì)身份進(jìn)行分區(qū)以防止跨站點(diǎn)跟蹤的概念,在站點(diǎn)之間劃定界限,限制對(duì)可用于識(shí)別用戶(hù)的任何信息的訪(fǎng)問(wèn)。

瀏覽器的默認(rèn)行為是對(duì)同一站點(diǎn)進(jìn)行分區(qū),上面這個(gè)新的策略意味著分區(qū)被可以開(kāi)放為多個(gè)站點(diǎn)。

First-Party Sets 策略的一個(gè)重要部分是確??鐬g覽器的政策防止濫用或誤用。例如,F(xiàn)irst-Party Sets 策略不得在不相關(guān)的站點(diǎn)之間交換用戶(hù)信息,或?qū)Σ粚儆谕粚?shí)體的站點(diǎn)進(jìn)行分組。

所以單點(diǎn)登錄這種場(chǎng)景可能是不能用這種方式解決了,因?yàn)檫@個(gè)場(chǎng)景屬于交換用戶(hù)信息,目前怎么界定哪些信息是用戶(hù)信息官方還沒(méi)有明確的描述,所以這個(gè)地方筆者也不是很確定。

W3C 目前正在討論新的 First-Party Sets 的配置和驗(yàn)證,其中一個(gè)考慮的選項(xiàng)是由獨(dú)立實(shí)體而非瀏覽器公司處理驗(yàn)證。

目前 First-Party Sets 已經(jīng)確定的原則如下:

  •  First-Party Sets 中的域必須由同一組織擁有和運(yùn)營(yíng)。
  •  所有域名應(yīng)該作為一個(gè)組被用戶(hù)識(shí)別。
  •  所有域名應(yīng)該共享一個(gè)共同的隱私政策。

如何定義 First-Party Sets

每一個(gè)需要用到 First-Party Sets 策略的域名都應(yīng)該把一個(gè) JSON 配置托管在 /.well-known/first-party-set 路由下。

例如 conardli.top 的配置應(yīng)該托管在 https://conardli.top/.well-known/first-party-set 下: 

  1.  
  2.   "owner": "conardli.top",  
  3.   "version": 1,  
  4.   "members": ["conardli.com", "conardli.cn"]  

另外 conardli.com、 conardli.cn 兩個(gè)域名均需要增加所有者的配置: 

  1.  
  2.   "owner": "conardli.top"  

First-Party Sets 還有一些限制:

  •  一個(gè)集合可能只有一個(gè)所有者。
  •  一個(gè)成員只能屬于一個(gè)集合,不能重疊或混合。
  •  域名列表不要過(guò)大。

SameParty 屬性

好了,上面介紹了一大堆,終于回到本文的主題 Cookie SameParty 屬性了,這個(gè)屬性就是為了配合 First-Party Sets 使用的。

所有開(kāi)啟了 First-Party Sets 域名下需要共享的 Cookie 都需要增加 SameParty 屬性,例如,如果我在 conardli.top 下設(shè)置了下面的 Cookie : 

  1. Set-Cookie: name=lishiqi; Secure; SameSite=Lax; SameParty 

這時(shí)我在 conardli.cn 下發(fā)送 conardli.top 域名的請(qǐng)求,Cookie 也可以被攜帶了,但是如果我在另外一個(gè)網(wǎng)站,例如 eval.site 下發(fā)送這個(gè)請(qǐng)求, Cookie 就不會(huì)被攜帶。

在 SameParty 被廣泛支持之前,你可以把它和 SameSite 屬性一起定義來(lái)確保 Cookie 的行為降級(jí),另外還有一些額外的要求:

  •  SameParty Cookie 必須包含 Secure.
  •  SameParty Cookie 不得包含 SameSite=Strict.

如何試用?

在瀏覽器禁用三方 Cookie 后,這個(gè)新的提案應(yīng)該會(huì)被大范圍的使用,現(xiàn)在可以先試用起來(lái)啦!

你可以在下面兩個(gè)地方參與提案的討論:

  •  First-Party Sets 策略討論:https://github.com/privacycg/first-party-sets
  • SameParty 屬性討論:https://github.com/cfredric/sameparty

現(xiàn)在提案還在試用階段,你可以試用 --use-first-party-set 這個(gè)命令啟動(dòng) Chrome ,就可以進(jìn)行試用啦!

比如,在示例站 https://fps-member1.glitch.me/ 添加如下配置: 

  1. --use-first-party-set=https://fps-member1.glitch.me,https://fps-member2.glitch.me,https://fps-member3.glitch.me 

參考

 

責(zé)任編輯:龐桂玉 來(lái)源: 前端大全
相關(guān)推薦

2022-04-17 09:56:41

cookiesame-party

2009-07-01 18:17:32

JSP處理Cookie

2022-03-22 14:52:05

Cookie瀏覽器

2009-12-28 10:04:59

.NET 4.0數(shù)組

2009-09-27 10:03:53

Silverlight

2019-01-04 15:14:18

2013-08-21 09:21:01

2021-08-16 07:05:58

ES6Promise開(kāi)發(fā)語(yǔ)言

2013-08-21 10:08:16

2011-05-31 09:36:46

Android 布局屬性

2010-05-27 15:53:35

SVN屬性設(shè)置

2010-09-03 12:46:28

CSSexpression

2009-02-11 10:08:53

Cookie屬性JSP

2010-08-23 08:45:08

CSSpadding內(nèi)邊距

2010-08-23 15:33:47

CSSpadding

2010-09-01 13:37:58

CSSclip屬性

2009-04-27 13:42:38

SQL Server Hierarchyid微軟

2010-10-28 16:22:58

Windows 7 S

2024-09-05 14:25:35

2010-08-16 16:27:42

DIV布局屬性
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)