SameSite Issue

關於SameSite Cookie Issue

起緣

因為GDPR法規關係,各大瀏覽器會限縮網頁的第三方網站,去寫入Cookie,對使用者進行廣告追蹤, 而我們的產品端常常會被客戶鑲嵌(iframe) 在網站中,因此踩到此限制。

曾經發生的問題

  1. Windwos update IIS 將預設的Cookie 嚴格模式改成Lax (後來產品端透過Url Rewrite 依據不同的user agent 去蓋掉Response Header 設定值)

  2. Safari 在某次更新後對Cookie做了限制,禁止第三方網站寫入Cookie (做完POC後驗證可行性後和產品部門討論,最後採用蘋果的Storeage Access api)

解決方案

短期

1.將網頁導到產品方網站。
2.採用蘋果的Storeage Access api
平台端:iframe sandbox 要加allow-same-origin allow-storage-access-by-user-activation 產品端:在set cookie的頁面需要要加上一個按鈕讓使用者確認按下,執行storage access api。

中長期(產品端)

  1. 採 Token Base 驗證機制 (產品端不再使用Cookie)
  2. 移除Sticky Cookie(需要考量之後log怎麼追)。
  3. 移除Cookie Data。

補充

  1. iOS 13 的 SameSite bug iphone 13以前的版本有bug,SameSite設定值只要有值就會視同為Lax 不能給SameSite=none,因此要給SameSite=””
  2. Storage access api 支援度 新edge及Chrome 己支援Storage access api,並在BETA中,不排除未來有更多的瀏覽器也會跟進。