你必須知道的session與cookie

2021-08-19 11:46:18 字數 1731 閱讀 2901

提到session我們能聯想到的就是使用者登入功

能,而本身我們使用session的基礎是通過url進行訪問的,也就是使用http協議進行訪問的,而http協議本身是無狀態的,那麼問題來了伺服器端是怎麼驗證客戶端身份的?

:伺服器端和客戶端驗證的聯絡就是sessionid,登入成功之後伺服器會自動給客戶端乙個session標識也就是sessionid,而sessionid會儲存到客戶端的cookie裡面,每次請求的時候都會帶上這個標識,用來讓伺服器端驗證身份的。伺服器端的sessionid一般是儲存

在記憶體中的,通過某種演算法加密儲存到伺服器上,客戶端就儲存到cookie裡面,當頁面關閉的時候客戶端的sessionid就會消失,而伺服器端的session不會因為客戶端的消失而關閉,而是通過他本身設定過期時間之後,才會失效。

總結來說,session本身就是通過儲存在客戶端的sessionid進行身份驗證。

那麼問題來了,如果客戶端的sessionid被讀取到,就可以偽裝身份,對系統進行破壞了,這就是儲存型xss了,那怎麼來處理怎麼問題呢?這就是接下來要說的cookie了。

定義:如果cookie中設定了httponly屬性,那麼通過js指令碼將無法讀取到cookie資訊,這樣能有效的防止xss攻擊,竊取cookie內容,這樣就增加了cookie的安全性。

解釋:也就是說伺服器端設定了httponly之後,客戶端是無法通過document.cookie獲取到cookie值了,這樣就有效的緩解了xss攻擊。

伺服器設定httponly方法:

然而,設定httponly只能一定程度的阻止xss,如果http在傳輸過程中被劫持了,該怎樣處理這個問題呢?那就是接下來要說的cookie的另乙個屬性secure了。

定義:當secure屬性設定為true時,cookie只有在https協議下才能上傳到伺服器,而在http協議下是沒法上傳的,所以也不會被竊聽。

解釋:當secure=true時,客戶端的cookie是不會上傳到伺服器端的(http協議)。

參考資料:

到此,本文已到尾聲,主要介紹了session的原理,以及cookie兩個非常重要的安全屬性的設定(httponly/secure),能力有限,不足之處,歡迎各位斧正~

Linux世界你必須知道的

突然從windows世界轉向linux世界,也許剛開始或多或少都有點不太適應,慢慢地,也許你會發現linux的博大精深,最重要的是linux世界的很多東西都是free license,下面列舉一下linux世界你需要或必須知道的二三事。unix like 叫做 類unix 系統,主要指各種各樣的li...

你必須知道的關於tcp keepalive 設定

1.引數設定 檢視相關的引數 sysctl a grep tcp keepalive net.ipv4.tcp keepalive intvl 30 net.ipv4.tcp keepalive probes 2 net.ipv4.tcp keepalive time 160 設定相關的引數 sys...

關於 Linux shell 你必須知道的

我個人很喜歡使用 linux 系統,雖然說 windows 的圖形化介面做的確實比 linux 好,但是對指令碼的支援太差了。一開始有點不習慣命令列操作,但是熟悉了之後反而發現移動滑鼠點點點才是浪費時間的罪魁禍首。那麼對於 linux 命令列,本文不是介紹某些命令的用法,而是說明一些簡單卻特別容易讓...