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

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


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

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

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


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


  cookie與session 機制之間的區別與聯繫:

  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,但是對於瀏覽器崩潰或者強行殺死進程時仍然無能爲力。


(本文轉載自網絡,感謝原文作者)

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