今天在chrome瀏覽器中觀察請求信息時發現了這樣一個警告:chrome
咦,看起來像是阻止了個人 cookie 發送。通過查詢方知,原來谷歌爲了防止CSRF攻擊,已經逐步開始啓用 SameSite 這個cookie屬性,以更強制的手段來下降 CSRF 的風險。而這個特性從76版本後,就已經開始逐步加入到 chrome 穩定版當中了。我看了下本身的 chrome,赫,都已經 84版了,必然命中這個特性了。跨域
我們去chrome開發工具裏看一下cookie的屬性家族。哇看起來,cookie屬性家族真是愈來愈龐大了:瀏覽器
咱們來看下 sameSite 究竟是個什麼鬼東西。從MDN文檔能夠看到: samesite能夠阻止瀏覽器在跨域請求裏攜帶cookie。安全
在默認狀況下,該屬性的值是 Lax
,即鬆懈的意思,這個所謂的鬆懈相對於之前來講其實並不鬆懈,它是 只容許 GET 跨域請求攜帶
cookie
另一個值是 strict
,即嚴格模式,嚴格標誌將阻止cookie被瀏覽器發送到全部跨域目標網站,即便是常規的GET請求。工具
雖然繞過是不安全的。可是有些場景是沒有太嚴格的要求的,例如統計日誌數據的 cgi。除了上述2個值以外,還能夠將他聲明爲 none
。經過顯式聲明SameSite = None,開發人員仍然能夠不受限制的使用跨域cookie。開發工具
從Chrome 76開始,經過啓用默認默認cookie標記,該功能將可用。從2020年7月14日開始,此功能將逐步向Stable用戶推出。但MacOS上還有BUG(若是設置爲none,效果會變成strict)。另一個bug就是我本身電腦上加上samesite進行設置cookie是無效的,目前還不清楚緣由,若是有大佬知道爲啥不生效,還請但願大佬賜教。網站