安全測試學習筆記一(Cookie&Session)

一,Session:含義:有始有終的一系列動作/消息

1,  隱含了“面向連接” 和“保持狀態”兩種含義

2,  一種用來在客戶端與服務器之間保持狀態的解決方案

3,  也指這種解決方案的存儲結構“把××保存在session裏”

二, http 協議本來是無狀態的,所以引進了cookiesession機制來保持連接狀態

cookiesession 機制之間的區別與聯繫:

      cookie機制採用的是在客戶端保持狀態的方法

     session機制採用的是在服務器端保持狀態的方案,由於在服務器端保  持狀態的同時必須要求客戶端提供一個標識,

三,關於cookie機制

 Cookie 的使用是由瀏覽器按照一定的原則在後臺自動發送給服務器的,瀏覽器會檢查

所有存儲的cookie,如果某個cookie所聲明的作用範圍大於等於將要請求的資源所在的位置,則把該cookie附在請求資源的http請求頭上發送給服務器。

 存儲在硬盤上的cookie可以在不同的瀏覽器進程間共享,比如兩個IE窗口。而保存在內存裏的cookie,不同的瀏覽器有不同的處理方式,對於IE,在一個打開的窗口上按CTRL N(從文件菜單)打開的窗口可以與原窗口共享cookie,而使用其他方式新開的IE進程則不能共享已經打開的窗口的內存cookie

        Cookie的內容包括: 名字,值,過期時間,路徑和域

四,關於session的機制

 當程序需要爲某個客戶端的請求創建一個session的時候,服務器首先檢查這個請求是否含了一個session 標識(session id),如果有,則說明以前爲該客戶創建了一個session,服務器就按照session id把這個session檢索出來用,一般一個cookie的名字就是類似於session ID,如果cookie被禁止的時候(cookie可以被人爲的禁止),經常使用重寫URL的方式,把session ID附加在URL路徑後面,爲了在整個交互過程中始終保持狀態,就必須在每個客戶端可能請求的路徑後面都包含這個session id

人們以爲:“把瀏覽器關閉了,session 就小時了”其實不對,除非程序通知服務器刪除一個session,否則服務器會一直保留,而程序一般都是在用戶作log off的時候發個指令去刪除session。人們之所以會產生這種錯覺,是因爲大部分session會採用cookie來保存session,而關閉瀏覽器後這個session就消失了,如果服務器設置的cookie被保存到硬盤上,或者使用某種手段改寫瀏覽器發出的http請求頭,把原來的session id發送給服務器,則再次打開瀏覽器,其實是可以再次找到之前的session id的。所以設置失效時間可以起到一定的保護作用。

五,關於session的一些問題

1,                session何時被創建: 不是在客戶端訪問時就被創建,而是在服務器端調用httpservletRequest.getSession(true)時才被創建。

 

2,                session何時被刪除:  A,程序調用httpSession.invalidate(),B距離上一次收到客戶端發送的session id時間間隔超過了session的超時設置 C,服務器進程被停止(非持久session

3,                如何做到關閉瀏覽器同時關閉session  嚴格說做不到,可以讓所有的客戶端頁面使用window.onclose來監視瀏覽器的關閉東西,然後向服務器發送一個請求來刪除session,但是對於瀏覽器崩潰或者強行殺死進程時仍然無能爲力。

 

 
發佈了27 篇原創文章 · 獲贊 0 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章