Cookie與Session的安全性


說到cookie與session我們首先要說一下為什么要引入這兩個東西,這兩個多西到底是干什么的

 

起源

由於HTTP協議使無狀態的:

  • 每一次請求都是新的請求,不會記得之前通信的狀態
  • 客戶端與服務端的一次通訊,就是一次會話

由於HTTP協議無狀態的特性,我們在某些存在狀態的網站中(如登陸),如果只是用HTTP協議而不加入狀態保持,那當用戶每次訪問一個新的網頁都需要用戶進行登陸,降低用戶的體驗度,因此引入cookie和session對會話的狀態進行存儲,以達到狀態保持的效果。

區別

Cookie

保存在瀏覽器中,以鍵值對的形式存在,可以用來做用戶認證,存儲上限一般為4K; 由於數據存儲在瀏覽器中,容易被其他惡意程序利用,數據的安全性不高。

Session

將用戶的會話信息保存在服務器端,key值是隨機產生的字符串,value值時session的內容,依賴於cookie將每個用戶對應的key值保存到瀏覽器中; session沒有具體的大小限制,可以存儲的數據量比cookie大; 由於信息保存在服務器端,不會輕易的被惡意程序利用,數據的安全性相對較高

安全性

上面也提到了,cookie是存在用戶的瀏覽器中的,是可以被惡意程序獲取並加以利用的;那么問題來了,既然cookie內的內容會被獲取到,那存在cookie中的sessionid(也就是key值),豈不是也會被獲取到並加以利用?

沒錯,其實HTTP本身就不安全,只要是存在cookie中的數據都可以獲取到並加以利用,但是session的安全性也是相對的,由於數據存儲在數據庫中,就算sessionid被獲取利用,但是session中的數據並不會被惡意程序獲取,這一點相對cookie來說就安全了一些;

所以使用HTTP協議的網頁本身就不會帶有較為敏感的信息(如支付),如果涉及到一些敏感的信息,並不希望被輕易獲取到,還是建議使用HTTPS協議。

以上純屬個人理解,如有錯誤,歡迎指正

轉載於:https://juejin.im/post/5c07c7026fb9a049fd0fa262


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM