Cookie和會話狀態的工作原理及Cookie欺騙

存在兩種類型的cookie:


Session cookies - these are temporary and are erased when you close your browser at the end of your surfing session. The next time you visit that particular site it will not recognise you and will treat you as a completely new visitor as there is nothing in your browser to let the site know that you have visited before

不設置過期時間,則表示這個cookie生命週期為瀏覽器會話期間,只要關閉瀏覽器窗口,cookie就消失了。這種生命期為瀏覽會話期的cookie被稱為會話cookie。會話cookie一般不保存在硬盤上而是保存在內存裡。

Persistent cookies - these remain on your hard drive until you erase them or they expire. How long a cookie remains on your browser depends on how long the visited website has programmed the cookie to last

設置了過期時間,瀏覽器就會把cookie保存到硬盤上,關閉後再次打開瀏覽器,這些cookie依然有效直到超過設定的過期時間。



存儲在硬盤上的cookie可以在不同的瀏覽器進程間共享,比如兩個IE窗口。而對於保存在內存的cookie,不同的瀏覽器有不同的處理方式。





Cookie和會話狀態的工作原理及Cookie欺騙  



session是一種保存上下文信息的機制,它是針對每一個用戶的,變量的值保存在服務器端,通過SessionID來區分不同的客戶,session是以Cookie或URL重寫為基礎。默認使用Cookie來實現,系統會創造一個名為JSESSIONID的輸出Cookie,或稱為"Session Cookie",以區別Persistent Cookies(通常所說的Cookie).Session Cookie是存儲在瀏覽器中,並不是寫在硬盤上的,但是把瀏覽器的Cookie禁止後,使用response對象的encodeURL或 encodeRedirectURL方法編碼URL,WEB服務器會采URL重寫的方式傳遞Sessionid,用戶就可以在地址欄看到 jsessionid=A09JHGHKHU68624309UTY84932之類的字符串。



通常Session Cookie是不能跨窗口使用,當用戶新開了一個瀏覽器進入相同的頁面時,系統會賦予用戶一個新的SessionID,這樣信息共享的目的就達不到,此時可以把SessionID保存在Persistent Cookie中,然後再新的窗口中讀出來,就可以得到上一個窗口的SessionID了,這樣通過Session Cookie和Persistent Cookie的結合,實現了跨窗口的會話跟蹤。



session的工作原理

就session的實現而言,好像是這樣的:

(1)當有Session啟動時,服務器生成一個唯一值,稱為SessionID(好像是通過取進程ID的方式取得的)。

(2)然後,服務器開闢一塊內存,對應於該SessionID。

(3)服務器再將該SessionID寫入瀏覽器的cookie(一些在網頁的源代碼中有所體現)。

(4)服務器內有一進程,監視所有Session的活動狀況,如果有Session超時或是主動關閉,服務器就釋放該內存塊。

(5)當瀏覽器連入IIS(服務器)時並請求的ASP(腳本語言)內用到Session時,IIS(服務器)就讀瀏覽器Cookie中的SessionID。

(6)然後,服務檢查該SessionID所對應的內存是否有效。

(7)如果有效,就讀出內存中的值。

(8)如果無效,就建立新的Session。



注意:

(1)在大瀏覽量的網站,Session並不保險,我們過去的網站就經常碰到存在Session中得值不正確(可能出現重複的Session ID)。

(2)Session ID不能從硬盤上的Cookie文件獲得,如果想在客戶端獲知自己的Session ID,只能通過Javascrīpt來讀取。







Cookie和會話狀態

做BS開發,這兩個概念必不可少,先來個大概了解,沒有實際應用很難深入,深入看參考地址!



什麼是 Cookie?

Cookie 是一小段文本信息,伴隨著用戶請求和頁面在 Web 服務器和瀏覽器之間傳遞。用戶每次訪問站點時,Web 應用程序都可以讀取 Cookie 包含的信息。 Cookie 的基本工作原理如果用戶再次訪問站點上的頁面,當該用戶輸入 URL*****.com時,瀏覽器就會在本地硬盤上查找與該 URL 相關聯的 Cookie。如果該 Cookie 存在,瀏覽器就將它與頁面請求一起發送到您的站點。



Cookie 有哪些用途?

最根本的用途是:Cookie 能夠幫助 Web 站點保存有關訪問者的信息。更概括地說,Cookie 是一種保持Web 應用程序連續性(即執行“狀態管理”)的方法.使 Web 站點記住您.



什麼是會話Session?

當用戶訪問您的站點時,服務器會為該用戶創建唯一的會話,會話將一直延續到用戶訪問結束。



cookie欺騙原理



正如我們所知道的,在網絡詞彙中,cookie是一個特殊的信息,雖然只是服務器存於用戶計算機上的一個文本文件,但由於其內容的不尋常性(與服務器有一定的互交性,且常會存儲用戶名,甚至口令,或是其它一些敏感信息,例如在江湖或是一些社區中,常會用cookie來保存用戶集分,等級等等)。因而成為一些高手關注的對象,借此來取得特殊權限,甚至攻克整個網站。以下是自己在xp,2003上做過的測試關於javascrīpt中對cookie的應用。



一、cookie的建立



在講如何建立cookie之前,我們先來了解一下cookie的基本格式:

cookiename+cookievalue;expire=expirationdategmt;path=urlpath;domain=sitedomain

其中各項以;分開,首先是指定cookie的名稱,並為其賦值。接下來分別是cookie的有效期,url路徑以及域名,在這幾項中,除了第一項以外,其它部分均為可先項。

沒有留言 :

張貼留言