cookie的安全性

什麼是cookie

指某些網站爲了辨別用戶身份、進行session跟蹤而存儲在用戶本地終端上的數據(通常經過加密)。(注:此定義來自百度百科)

cookie對於登錄的效果

排除用戶手動刪除瀏覽器cookie以及cookie未過期的情況下,用戶如果在某網站登錄過一次,下次訪問這個網站,用戶不需要輸入用戶名和密碼就可以進入網站。

cookie的生命週期

創建cookie的時候,會給cookie指定一個值:Expire,它就是指定cookie的有效期,也就是cookie的生命週期,超出設置的這個生命週期,cookie就會被清除。如果給這個值Expire設置爲0或者負值,那麼這樣的設置就是在關閉瀏覽器時,就會清除cookie,這種方式更加安全。

爲什麼cookie不安全

最大的原因是因爲它存儲在瀏覽器端(用戶本地),一些別有用心的人能夠通過瀏覽器截獲cookie(腳本、利用工具抓取等)。

cookie不安全的表現形式

1)cookie欺騙; 但這時就會去考慮了,既然如此,爲何不加密呢?加密後就算拿到cookie不是也沒有用麼?關鍵問題就在這裏了,一些別有用心的人不需要知道這個cookie的具體含義,只需要將這個cookie向服務器提交(模擬身份驗證),身份驗證通過之後,就可以冒充被竊取cookie對應用戶來訪問網站,甚至獲取到用戶的隱私信息,對於用戶的隱私造成非常嚴重的危害,這種方式就叫做cookie欺騙。
2)cookie截獲; cookie以純文本的形式在瀏覽器和服務器之間傳遞,在web通信時極容易被非法用戶截獲和利用。非法用戶截獲cookie後,在cookie的有效時間內重新發放給服務器,那麼這個非法用戶就擁有了這個合法用戶的所有權限。

3)Flash的內部代碼隱患; Flash中有一個getURL()函數,Flash利用它自動打開指定的頁面。那麼這個就意味着,你在觀看Flash動畫時,在Flash的內部可以悄無聲息的打開一個極小的不易發現的包含特殊操作的頁面,可以是木馬,可以向遠端輸入當前cookie或者用戶信息,這是非常危險的,由於這個是Flash內部的操作,所以網站無法禁止,要想避免,儘量打開本地防火牆以及訪問正規網站。

如何解決cookie安全性問題

第一步: 設置cookie有效期不要過長,合適即可

第二步: 設置HttpOnly屬性爲true;可以防止js腳本讀取cookie信息,有效的防止XSS攻擊。

第三步: 設置複雜的cookie,加密cookie
(1)cookie的key使用uuid,隨機生成;
(2)cookie的value可以使用複雜組合,比如:用戶名+當前時間+cookie有效時間+隨機數。
這樣可以儘可能使得加密後的cookie更難解密,也是保護了cookie中的信息。

第四步: 用戶第一次登錄時,保存ip+cookie加密後的token
每次請求,都去將當前cookie和ip組合起來加密後的token與保存的token作對比,只有完全對應才能驗證成功。

第五步: session和cookie同時使用
sessionId雖然放在cookie中,但是相對的session更安全,可以將相對重要的信息存入session。

第六步: 如果網站支持https,儘可能使用https
如果網站支持https,那麼可以爲cookie設置Secure屬性爲true,它的意思是,cookie只能使用https協議發送給服務器,而https比http更加安全。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章