2009-02-25 59 views
0

我想知道會話管理和餅乾在PHP中是如何工作的。我想知道它們的基本機制,比如瀏覽器如何與cookie交互,以及如何使用cookie來驗證服務器中的會話數據。會話管理和cookies--的互動機制

是否有任何的網絡資源,讓我學習了嗎?

回答

1

PHP’s Session Handling手冊:

訪問者訪問你的網站被分配一個唯一的ID,即所謂的會話ID。這可以存儲在用戶端的cookie中,也可以在URL中傳播。

這個唯一的id是一個很大的隨機數,它存儲在服務器端,以便下一次客戶端發出新的請求時匹配它。它通常進入/ tmp目錄。

2

特別是在PHP中,標準方式會話的工作原理是PHP生成一個隨機會話ID並將其放入cookie中。 (默認名稱爲PHPSESSID),此cookie是由瀏覽器通過本地保存它在用戶的機器上處理,並與每個請求將其所屬的域發送。

此會話ID然後用於指代服務器計算機上的數據存儲區,位於Linux上apache安裝目錄下的/ tmp /目錄中。這是$ _SESSION數組中的所有內容都存儲在請求之間的地方。

您可能會注意到,這與cookie的安全性相同,因爲用戶與服務器之間沒有真正的身份驗證,因此用戶是會話ID的「真正」所有者。這意味着,所謂的「會話劫持」是可能通過嗅探cookie,並插入與攻擊者的機器上的會話ID的Cookie。這可以用來接管的賬戶在網頁上,和它周圍的瀏覽,就像如果你是原來的用戶,因爲你服務器。

還有一種替代的,甚至更不安全的保持PHP支持的活動會話的方式。這是通過將會話ID作爲GET變量發送給每個鏈接來完成的。您可能會注意到,這意味着如果用戶只需複製粘貼這些鏈接中的一個,他就會放棄所有憑據。 =)

更多相關信息,請參閱the PHP manual

0

Cookie是一些與HTTP地址相關的數據。 也就是說

1/ Browser requests www.google.com 
2/ www.google.com response includes setting a cookie 
3/ From this point on and as long as the cookie is valid (there's an expiry time associated with it), each subsequent request made by the browser to www.google.com/anything includes the cookie above 

詳情:http://en.wikipedia.org/wiki/HTTP_cookie

一個cookie允許在這個意義上,它允許客戶端 - 服務器會話否則無狀態的HTTP協議創建會話從其他客戶端與服務器交互中分離出來。