1. 程式人生 > 實用技巧 >cookie安全小知識

cookie安全小知識

一、背景

cookie作為瀏覽器端儲存客戶相關資訊的重要載體,在為我們開發提供方便的同時,也埋下了一些安全隱患。如果在使用過程中不注意,就有可能被圖謀不軌者利用起來,造成安全事故。

二、cookie的同源策略

瀏覽器每次傳送請求時,會根據請求的地址,來判斷自身是否儲存了符合同源策略的cookie,如果有,則會將cookie一起傳送給服務端。

所謂同源判斷,是指:

假設某個cookie名為test,

設定的domain為 :

.cnblogs.com

設定的path為:

/pathtest

那麼,能夠訪問到該cookie的服務地址為:

cnblogs.com
i.cnblogs.com 等子域

同時,訪問的路徑必須為:

/pathtest/* 等子路徑

超出這個範圍的路徑與域名,瀏覽器在傳送請求時,是不會cookie-test傳送出去的。

三、cookie的屬性安全設定

1、設定secrue屬性為true

在設定了該屬性後,瀏覽器只會對於https的請求帶上cookie,而http請求是不會帶上cookie資訊的。如果cookie中存在敏感資訊,那麼就很有必要設定該屬性,這樣即便cookie被中間人竊取了,也不會洩露明文資訊。

2、設定httponly屬性為true

通過設定該屬性,cookie將不可被js指令碼讀取,從而無法在客戶端洩露出cookie。不過對於服務端,我們也需要禁止迴應 http trace方法,否則黑客還是可以通過該途徑竊取cookie(該方法常用來debug,服務端會將收到的請求原封不動的回覆給客戶端,自然也包含了cookie資訊)

3、設定samesite 屬性

由Chrome51版本只會瀏覽器在支援,通過該屬性,可以防止不同domain下的請求帶上原網址的cookie,它的可選值為:

strict 、lax、none

當設定為strict時,只有當前網頁地址與cookie的設定完全一致時,才會傳送cookie ,也就是說,如果我在B網站,哪怕是直接點選了某個連結到A網站的地址,這時候瀏覽器向A傳送請求時,是不會帶上cookie的,這樣,能夠有效的預防CSRF攻擊。

當設定為 lax 的時候,能夠允許get請求中帶上cookie,但是post是不行的。

4、設定HostOnly屬性為true

通過該屬性,可以設定cookie是否可以被子域所共享。

參考連結:

cookie的同源策略與作用域:https://www.cnblogs.com/liaojie970/p/7606168.html

cookie安全屬性:https://techblog.topdesk.com/security/cookie-security/