關於SameSite Cookie Issue
起緣
因為GDPR法規關係,各大瀏覽器會限縮網頁的第三方網站,去寫入Cookie,對使用者進行廣告追蹤, 而我們的產品端常常會被客戶鑲嵌(iframe) 在網站中,因此踩到此限制。
曾經發生的問題
-
Windwos update IIS 將預設的Cookie 嚴格模式改成Lax (後來產品端透過Url Rewrite 依據不同的user agent 去蓋掉Response Header 設定值)
-
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。
中長期(產品端)
- 採 Token Base 驗證機制 (產品端不再使用Cookie)
- 移除Sticky Cookie(需要考量之後log怎麼追)。
- 移除Cookie Data。
補充
- iOS 13 的 SameSite bug iphone 13以前的版本有bug,SameSite設定值只要有值就會視同為Lax 不能給SameSite=none,因此要給SameSite=””
- Storage access api 支援度 新edge及Chrome 己支援Storage access api,並在BETA中,不排除未來有更多的瀏覽器也會跟進。