1. 程式人生 > >安全測試之session,cookie

安全測試之session,cookie

最大 區分 瀏覽器和服務器 長時間 如何 臺電 是不是 也看 狀態

session

session機制是一種服務器端的機制,服務器使用一種類似於散列表的結構(也可能就是使用散列表)來保存信息。
?但程序需要為某個客戶端的請求創建一個session的時候,服務器首先檢查這個客戶端的請求裏是否包含了一個session標識-稱為session id,如果已經包含一個session id則說明以前已經為此客戶創建過session,服務器就按照session id把這個session檢索出來使用(如果檢索不到,可能會新建一個,這種情況可能出現在服務端已經刪除了該用戶對應的session對象,但用戶人為 地在請求的URL後面附加上一個JSESSION的參數)。
?如果客戶請求不包含session id,則為此客戶創建一個session並且生成一個與此session相關聯的session id,這個session id將在本次響應中返回給客戶端保存。

保存session id的幾種方式

A.保存session id的方式可以采用cookie,這樣在交互過程中瀏覽器可以自動的按照規則把這個標識發送給服務器。
?B.由於cookie可以被人為的禁止,必須有其它的機制以便在cookie被禁止時仍然能夠把session id傳遞回服務器,經常采用的一種技術叫做URL重寫,就是把session id附加在URL路徑的後面,附加的方式也有兩種,一種是作為URL路徑的附加信息,另一種是作為查詢字符串附加在URL後面。網絡在整個交互過程中始終 保持狀態,就必須在每個客戶端可能請求的路徑後面都包含這個session id。
?C.另一種技術叫做表單隱藏字段。就是服務器會自動修改表單,添加一個隱藏字段,以便在表單提交時能夠把session id傳遞回服務器。

session什麽時候被創建
一個常見的錯誤是以為session在有客戶端訪問時就被創建,然而事實是直到某server端程序(如Servlet)調用HttpServletRequest.getSession(true)這樣的語句時才會被創建。

session何時被刪除

?session在下列情況下被刪除:
?A.程序調用HttpSession.invalidate()
?B.距離上一次收到客戶端發送的session id時間間隔超過了session的最大有效時間 軟失效
?C. Session的硬失效 網銀阿,支付寶阿 一直操作 長時間後 也會讓你失效

?D.服務器進程被停止

cookie

Cookie在英文中是小甜品的意思,但在計算機語言中,Cookie指的是當你瀏覽某網站時,網站存儲在你電腦上的一個小文本文件,伴隨著用戶請求和頁面在 Web 服務器和瀏覽器之間傳遞。它記錄了你的用戶ID,密碼、瀏覽過的網頁、停留的時間等信息,用於用戶身份的辨別。Cookie通常是以user@domain格式命名的,user是你的本地用戶名,domain是所訪問的網站的域名。

為什麽要使用Cookie

因為HTTP協議是無狀態的,對於一個瀏覽器發出的請求,服務器無法區分是不是同一個來源,無法知道上一次用戶做了什麽。所以,需要額外的數據用於維護會話。 Cookie 正是這樣的一段隨HTTP請求一起被傳遞的額外數據,用於維護瀏覽器和服務器的會話。我們可以想象一個場景,你沒有登錄京東時在京東上購物,選擇了3件商品放入購物車,在結算時,京東為什麽還能知道這三件商品是什麽?沒錯,是Cookie!

Cookie的工作原理

Cookie利用網頁代碼中的HTTP頭信息,伴隨著用戶請求和頁面在 Web 服務器和瀏覽器之間傳遞。
?例如:當你在瀏覽器地址欄中鍵入了Amazon的URL,瀏覽器會向Amazon發送一個讀取網頁的請求,並將結果在顯示器上顯示。在發送之前,該網頁在你的電腦上尋找Amazon網站設置的Cookie文件,如果找到,瀏覽器會把Cookie文件中的數據連同前面輸入的URL一同發送到Amazon服務器。服務器收到Cookie數據,就會在他的數據庫中檢索你的ID,你的購物記錄、個人喜好等信息,並記錄下新的內容,增加到數據庫和Cookie文件中去。如果沒有檢測到Cookie或者你的Cookie信息與數據庫中的信息不符合,則說明你是第一次瀏覽該網站,服務器的CGI程序將為你創建新的ID信息,並保存到數據庫中。

關於Cookie的一些知識點

1、Cookie是基於瀏覽器的,因此當電腦上安裝多個瀏覽器時,服務器會生成多個Cookie。雖然是同一個人,但服務器是識別為多個用戶。
?2、Cookie是基於瀏覽器的,因此當同一臺電腦同一瀏覽器有多個人使用時,服務器也只生成一個Cookie。雖然是多個人,但服務器會認為是一個用戶。
?3、Cookie是無法跨設備進行設置的。比如我們在單位和家裏分別使用兩臺電腦,即使我們使用同一種同一版本的瀏覽器,我們還是生成了兩個Cookie,服務器會認為是兩個用戶。(PS:現在有些瀏覽器可以同步數據,比如Chrome、Friefox,可以避免這種問題)
?請註意:以上所說的Cooke指的全部是Http Cookie。有一種Cookie——Flash Cookie,可以解決多瀏覽器的問題。

關於Flash Cookie

?FlashCookie是由FlashPlayer控制的客戶端共享存儲技術,鑒於目前Flash技術的普遍性,幾乎所有的網站都采用,所以具有同Http Cookie一樣的作用。在技術上,通過使用JavaScript與ActionScript可以將Http Cookie和Flash Cookie進行互通。
?Flash cookie的優勢在於:
?1、跨瀏覽器
?不管用戶的計算機上安裝了多少個瀏覽器或者瀏覽器的不同版本,使用Flash Cookie能夠使所有的瀏覽器共用一個Cookie。
?2、不易刪除
?所有的瀏覽器均提供了清除Http Cookie的快捷方式,但Flash Cookie並沒有此種方式,並且其保存位置非常隱蔽,難以刪除。
?3、容量更大
?Flash Cookie可以容納最多100千字節的數據,而一個標準的HTTP Cookie只有4千字節。

Cookie的失效時間

?1、瀏覽器的Cookie設置會決定是否保存Cookie數據。如果瀏覽器不允許Cookie保存,則關掉瀏覽器後,這些數據就消失。
?2、如果瀏覽器允許保存Cookie,那麽Cookie的時間由服務器的設置決定。Cookie有一個Expires(有效期)屬性,這個屬性決定了Cookie的保存時間,服務器可以通過設定Expires字段的數值,來改變Cookie的保存時間。如果不設置該屬性,那麽Cookie只在瀏覽網頁期間有效,關閉瀏覽器,這些Cookie自動消失,絕大多數網站屬於這種情況。通常情況下,Cookie包含Server、Expires、Name、value這幾個字段,其中對服務器有用的只是Name和value字段,Expires等字段的內容僅僅是為了告訴瀏覽器如何處理這些Cookies。

比較Session和Cookie
?具體來說cookie機制采用的是在客戶端保持狀態的方案,而session機制采用的是在服務器端保持狀態的方案。同時我們也看到,由於采用服務器端保持狀態的方案在客戶端也需要保存一個標識,所以session機制可能需要借助於cookie機制來達到保存標識的目的,但實際上它還有其他選擇。

安全測試之session,cookie