在一般的Web應用上,如果要實現用戶登陸,最常用,也是最簡單的方法就是使用Session,基本的思路是在Session中保留一些用戶身份信息,然後每次在Session中取,如果信息不正確或不存在,那麼身份驗證失敗,正確則成功。
Session和Cookie是兩個很相似的東西,都是字符串,只不過Session是保存在服務器上的,而Cookie是保存在本地的,所以Cookie是不能用作身份驗證的。Session故名思議,肯定和客戶端與服務器間建立的會話相關,Session的工作過程也是如此,每當客戶端和服務器上的一個站點建立了會話後,就會生成Session在服務器上,只不過Session裡有沒有相關的信息,就要看用戶的提交操作了。
Session的區分是按照服務器給的SessionID來進行的,不同種類的服務器SessionID不同,以下列舉幾種SessionID:
①使用ASP.NET的IIS服務器:ASP.NET_SessionId
②使用Java的Tomcat服務器:JSESSIONID
利用Session進行的身份驗證過程:
開啟了Session支持的服務器在客戶端開始會話的時候,生成一個SessionID,並且在響應(Response)頭(Headers)中的Set-Cookie字段設置一個Cookie,Cookie的內容就是SessionID和Cookie的路徑(path),在後繼的會話中,客戶端浏覽器會自動附上Set-Cookie中的SessionID以向服務器表明身份,服務器根據SessionID在自己的存儲中查找相關用戶信息,並完成驗證過程。
那麼用戶登陸的過程也就是用戶對服務器提交用戶名、密碼等信息,獲取SessionID的過程。
模擬用戶登陸,不是為了進行暴力破解,而是為了越過某些網站的身份驗證,然後獲取所需信息,就比如說學校的圖書館,如果在程序中想要獲取讀者的借閱信息,因為程序不會像浏覽器那樣自動帶上SessionID,那麼就必須將用戶名和密碼提交至服務器,獲得到SessionID以後,對後繼的請求帶著SessionID去請求其他頁面,才能獲取到借閱信息,大致流程如下:
更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-07/104488p2.htm