Google預告明年即將到來的Chrome 80,將會正式啟用新的Cookie安全模型,未來開發者想要跨網站存取Cookie,必須要明確的使用SameSite=None語法,當沒有特別指定的時候,Chrome將預設拒絕Cookie被跨網域存取。Mozilla確認會支援新的Cookie分類模型,並在Firefox實作SameSite=None,而微軟將在Edge 80開始實驗性測試。

網站通常由廣告、內容推薦、第三方小工具以及社交平臺嵌入等各種外部服務共同組成,當使用者瀏覽網頁的時候,這些外部服務可能會在瀏覽器中儲存Cookie,並在之後透過這些Cookie來個人化使用者瀏覽體驗,或是量測受眾的參與度。

Cookie的使用分為跨網站(Cross-Site)與同網站(Same-Site)上下文,每個Cookie都有一個相關聯的網域,當Cookie關聯的網域和瀏覽器網址列中的網域不相同,則視為跨網站上下文(下圖),反之,當Cookie關聯的網域和瀏覽器網址列中網域相同,則會被視為同網站上下文,通常同網站Cookie是用來登入個別網站、記錄使用者偏好,並支援網站分析之用。

去年主要瀏覽器都支援了SameSite這個屬性,讓開發者增加Cookie存取限制,避免被意料之外的外部服務存取,以提高Cookie安全性,但由於需要額外增加設定,限制才會生效,因此現在Google決定讓預設從嚴。

主要的瀏覽器在去年都為Cookie加入了SameSite屬性,當開發人員使用SameSite=Lax或是SameSite=Strict,就能防止網站Cookie被外部服務存取,但是目前仍只有很少的開發人員遵循這個推薦實作,而大量同網站的Cookie仍對外暴露,產生跨站請求偽造攻擊的威脅。

因此為了保護更多的網站和用戶,Chrome將採用新的安全模型,預設保護所有的Cookie,除非進行額外設定,否則瀏覽器會拒絕外部存取同網站Cookie。開發者可以使用新的Cookie設定SameSite=None,來指定Cookie允許跨網站存取,而使用這個新設定還有額外的安全限制,外部只能透過HTTPS連接存取。如此,瀏覽器也能為用戶增加額外的控制功能,讓使用者自己決定哪些Cookie接受外部存取,以增加安全性與透明度。

這項新的Cookie安全模型將會在2020年2月發布的Chrome 80開始實施,Cookie沒有指定SameSite值都會被視作SameSite=Lax,而使用SameSite=None且使用安全連接,才會允許外部存取。由於這項改變對影響不少網站的正常功能,Google建議開發者應該儘早開始測試,而且許多函式庫和語言都還沒有支援SameSite=None,因此開發者應該直接設定Cookie標頭。

另外,未支援SameSite=None的瀏覽器,包含部分版本的Chrome和Safari等瀏覽器,可能會以意想不到的方式執行SameSite=None,開發人員應該為這些瀏覽器撰寫例外程式碼。


Advertisement

更多 iThome相關內容