Chrome 80 SameSite Cookie 的影響

千葉 熊
Oct 26, 2019 · 2 min read

Chrome 51 開始,瀏覽器的 Cookie 新增加了一個SameSite屬性,用來防止 CSRF 攻擊和用戶追蹤

CSRF攻擊(Cross-site Request Forgery)簡單地說是偽造Cookie來騙特定網站「我是你的正常使用者喔」

CSRF要能成立的必要條件是,使用者已登入網站,而最簡單的場景就是,使用者登入後,單憑瀏覽器與伺服端之間的會話溝通,就確認使用者的身分無誤而進行各種操作,因而使得有意攻擊者,只要能命令瀏覽器做出想要的請求,就能實現攻擊。

再說回SameSite屬性,雖然 Chrome 51 就加入了,但目前仍只有少數的網域開發人員遵循這個推薦實作,而大量同網站的Cookie仍對外暴露,產生跨站請求偽造攻擊的威脅。

所以在2020年2月發布的 Chrome 80 決定正式強制推行這項新的 Cookie 安全模型,屆時網站未宣告 SameSite=None 且使用HTTPS連線,與 Cookie 相關的請求都會被拒絕。

簡單地說,使用 3rd Party Cookie 為 追蹤/分析/投遞的服務都將無法正常運作

而SameSite屬性值基本上分為三個等級(Strict/Lax/None)

Strict最為嚴格,完全禁止第三方 Cookie,跨網域時,任何情況下都不會發送 Cookie。
換言之,只有當前網頁的 URL 與請求目標一致,才會帶上 Cookie。

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

Lax規則稍稍放寬,大多數情況也是不發送第三方 Cookie,但是導航到目標網址的 Get 請求除外。

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

Chrome 預計將Lax變為默認設置。這時,網站可以選擇顯式關閉SameSite屬性,將其設為None。不過,前提是必須同時設置Secure屬性(Cookie 只能通過 HTTPS 協議發送),否則無效。

無效設置:Set-Cookie: widget_session=p123; SameSite=None

有效設置:Set-Cookie: widget_session=p123; SameSite=None; Secure

延伸閱讀:你已經不再需要 CSRF 了(跨站點請求偽造)

延伸閱讀:讓我們來談談 CSRF

延伸閱讀:從防禦認識CSRF

千葉 熊

Written by

我是熊~一年四季冬眠中~@_@

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade