[前端] Cookie說明與使用建議

Go web 開發中的cookie和session
https://colobu.com/2018/09/28/cookie-and-session-in-go/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io

Cookie是指網站為了辨別使用者身份而儲存於用戶端的資料,由網景公司的前雇員盧·蒙特利在1993年3月發明。最初定義於RFC 2109, 以及後續的規範 RFC 2965、RFC 6265。

伺服器可以設置或讀取Cookies中包含資訊,借此維護使用者跟伺服器會話中的狀態,並且可以基於Cookie實現Session,用來在伺服器端存儲使用者的資料。

現在,幾乎所有的商業網站都會使用Cookie技術用來標示流覽的使用者,比如電子商務中的購物車、廣告追蹤系統等,並且涉及到一系列的安全問題和隱私問題。

A.Cookie也有一些天生的缺陷
1.Cookie會被附加在每個HTTP請求中,所以無形中增加了流量。
2.由於在HTTP請求中的Cookie是明文傳遞的,很容易遭受到中間人的攻擊,所以安全性成問題,除非用HTTPS。
3.Cookie的大小限制在4KB左右,對於複雜的存儲需求來說是不夠用的。
4.不同的流覽器Cookie不是共用的,你在Chrome中登錄了一個網站,使用Firefox還需要再次登錄,因為這兩個流覽器的Cookie不共用。
5.同一台機器同一個流覽器會共用同一個Cookie池,A用完流覽器後,如果不清理Cookie, B使用的時候會得到A的Cookie。
6.Cookie存在本地是明文訪問的,其他用戶如果能訪問的這個Cookie,就能看到這個Cookie的內容
7.容易遭受XSS跨站訪問
8.協力廠商腳本追蹤。網站中嵌入協力廠商的代碼,就容易被協力廠商公司利用,在一些互聯網巨頭和廣告公司中經常會使用。你在A網站流覽一些商品,在流覽B網站的時候,B網站的廣告會給你推送這些類似商品的資訊,這是因為A和B都嵌入了同一個協力廠商公司的代碼,通過Cookie能追蹤到你的流覽記錄。
9.Cookie投毒攻擊,例如在一個購物網站的Cookie中包含了顧客應付的款項,攻擊者將該值改小,達到少付款的目的。

B.在使用Cookie的時候,需要一些設置來避免受到攻擊
1.設置合理的domain和path
2.設置合適的MaxAge, 不使用時或者推出時設置為-1
3.設置HttpOnly為true
4.設置SameSite
5.採用https, 設置Secure為true
6.cookie不存儲私密的東西,名稱不設置直觀易讀的名稱
7.cookie進行加鹽和加密
8.不設置太大的Cookie
9.設置到安全較高的操作時,伺服器端對cookie和用戶端ID(流覽器屬性、作業系統、用戶端IP)進行驗證,避免被人竊取cookie


#Cookie, 缺陷, domain, path, MaxAge, HttpOnly, SameSite, https, XSS, 盜取, 加密, 驗證

留言