溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Cookie的SameSite屬性怎么用

發(fā)布時(shí)間:2022-03-02 14:15:55 來(lái)源:億速云 閱讀:323 作者:小新 欄目:web開發(fā)

這篇文章將為大家詳細(xì)講解有關(guān)Cookie的SameSite屬性怎么用,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

Chrome 51 開始,瀏覽器的 Cookie 新增加了一個(gè)SameSite屬性,用來(lái)防止 CSRF 攻擊和用戶追蹤。

一、CSRF 攻擊是什么?

Cookie 往往用來(lái)存儲(chǔ)用戶的身份信息,惡意網(wǎng)站可以設(shè)法偽造帶有正確 Cookie 的 HTTP 請(qǐng)求,這就是 CSRF 攻擊。

舉例來(lái)說(shuō),用戶登陸了銀行網(wǎng)站http://your-bank.com,銀行服務(wù)器發(fā)來(lái)了一個(gè) Cookie。

Set-Cookie:id=a3fWa;

用戶后來(lái)又訪問(wèn)了惡意網(wǎng)站http://malicious.com,上面有一個(gè)表單。

<form action="your-bank.com/transfer" method="POST">

 ...

</form>

用戶一旦被誘騙發(fā)送這個(gè)表單,銀行網(wǎng)站就會(huì)收到帶有正確 Cookie 的請(qǐng)求。為了防止這種攻擊,表單一般都帶有一個(gè)隨機(jī) token,告訴服務(wù)器這是真實(shí)請(qǐng)求。

<form action="your-bank.com/transfer" method="POST">

 <input type="hidden" name="token" value="dad3weg34">

 ...

</form>

這種第三方網(wǎng)站引導(dǎo)發(fā)出的 Cookie,就稱為第三方 Cookie。它除了用于 CSRF 攻擊,還可以用于用戶追蹤。

比如,F(xiàn)acebook 在第三方網(wǎng)站插入一張看不見的圖片。

<img src="facebook.com" style="visibility:hidden;">

瀏覽器加載上面代碼時(shí),就會(huì)向 Facebook 發(fā)出帶有 Cookie 的請(qǐng)求,從而 Facebook 就會(huì)知道你是誰(shuí),訪問(wèn)了什么網(wǎng)站。

二、SameSite 屬性

Cookie 的SameSite屬性用來(lái)限制第三方 Cookie,從而減少安全風(fēng)險(xiǎn)。

它可以設(shè)置三個(gè)值。

Strict

Lax

None

2.1 Strict

Strict最為嚴(yán)格,完全禁止第三方 Cookie,跨站點(diǎn)時(shí),任何情況下都不會(huì)發(fā)送 Cookie。換言之,只有當(dāng)前網(wǎng)頁(yè)的 URL 與請(qǐng)求目標(biāo)一致,才會(huì)帶上 Cookie。

Set-Cookie: CookieName=CookieValue; SameSite=Strict;

這個(gè)規(guī)則過(guò)于嚴(yán)格,可能造成非常不好的用戶體驗(yàn)。比如,當(dāng)前網(wǎng)頁(yè)有一個(gè) GitHub 鏈接,用戶點(diǎn)擊跳轉(zhuǎn)就不會(huì)帶有 GitHub 的 Cookie,跳轉(zhuǎn)過(guò)去總是未登陸狀態(tài)。

2.2 Lax

Lax規(guī)則稍稍放寬,大多數(shù)情況也是不發(fā)送第三方 Cookie,但是導(dǎo)航到目標(biāo)網(wǎng)址的 Get 請(qǐng)求除外。

Set-Cookie: CookieName=CookieValue; SameSite=Lax;

導(dǎo)航到目標(biāo)網(wǎng)址的 GET 請(qǐng)求,只包括三種情況:鏈接,預(yù)加載請(qǐng)求,GET 表單。詳見下表。

設(shè)置了Strict或Lax以后,基本就杜絕了 CSRF 攻擊。當(dāng)然,前提是用戶瀏覽器支持 SameSite 屬性。

2.3 None

Chrome 計(jì)劃將Lax變?yōu)槟J(rèn)設(shè)置。這時(shí),網(wǎng)站可以選擇顯式關(guān)閉SameSite屬性,將其設(shè)為None。不過(guò),前提是必須同時(shí)設(shè)置Secure屬性(Cookie 只能通過(guò) HTTPS 協(xié)議發(fā)送),否則無(wú)效。

下面的設(shè)置無(wú)效。

Set-Cookie: widget_session=abc123; SameSite=None

下面的設(shè)置有效。

Set-Cookie: widget_session=abc123; SameSite=None; Secure

關(guān)于“Cookie的SameSite屬性怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI