您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(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)把它分享出去讓更多的人看到。
免責(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)容。