我想知道會話管理和餅乾在PHP中是如何工作的。我想知道它們的基本機制,比如瀏覽器如何與cookie交互,以及如何使用cookie來驗證服務器中的會話數據。會話管理和cookies--的互動機制
是否有任何的網絡資源,讓我學習了嗎?
我想知道會話管理和餅乾在PHP中是如何工作的。我想知道它們的基本機制,比如瀏覽器如何與cookie交互,以及如何使用cookie來驗證服務器中的會話數據。會話管理和cookies--的互動機制
是否有任何的網絡資源,讓我學習了嗎?
訪問者訪問你的網站被分配一個唯一的ID,即所謂的會話ID。這可以存儲在用戶端的cookie中,也可以在URL中傳播。
這個唯一的id是一個很大的隨機數,它存儲在服務器端,以便下一次客戶端發出新的請求時匹配它。它通常進入/ tmp目錄。
特別是在PHP中,標準方式會話的工作原理是PHP生成一個隨機會話ID並將其放入cookie中。 (默認名稱爲PHPSESSID),此cookie是由瀏覽器通過本地保存它在用戶的機器上處理,並與每個請求將其所屬的域發送。
此會話ID然後用於指代服務器計算機上的數據存儲區,位於Linux上apache安裝目錄下的/ tmp /目錄中。這是$ _SESSION數組中的所有內容都存儲在請求之間的地方。
您可能會注意到,這與cookie的安全性相同,因爲用戶與服務器之間沒有真正的身份驗證,因此用戶是會話ID的「真正」所有者。這意味着,所謂的「會話劫持」是可能通過嗅探cookie,並插入與攻擊者的機器上的會話ID的Cookie。這可以用來接管的賬戶在網頁上,和它周圍的瀏覽,就像如果你是原來的用戶,因爲你是服務器。
還有一種替代的,甚至更不安全的保持PHP支持的活動會話的方式。這是通過將會話ID作爲GET變量發送給每個鏈接來完成的。您可能會注意到,這意味着如果用戶只需複製粘貼這些鏈接中的一個,他就會放棄所有憑據。 =)
更多相關信息,請參閱the PHP manual。
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協議創建會話從其他客戶端與服務器交互中分離出來。