1.cookie
cookie分為兩種:
①以文件的方式存儲在硬盤空間上的長期性的cookie:比如登錄時填寫的一些信息會被以文件的方式放在客戶端的硬盤上努潘。
②停留在瀏覽器所占內(nèi)存的臨時性的cookie疯坤。當(dāng)用戶登錄后深浮,session會讓cookie產(chǎn)生一個session_id,這個id是存于瀏覽器所占的內(nèi)存當(dāng)中飞苇。你關(guān)閉瀏覽器后洋闽,id也要消失突梦。
cookie采用的是客戶端保持狀態(tài)的方案,它是客戶端的會話狀態(tài)的一種存儲機制刊懈。他是服務(wù)器在本地機器上存儲的小段文本或者是內(nèi)存中的一段數(shù)據(jù)虚汛,并隨著每一個請求發(fā)送至同一個服務(wù)器皇帮。
2.什么是session
session是一種服務(wù)器端的信息管理機制,它把這些文件信息以文件的形勢存放在服務(wù)器的硬盤空間上属拾,這種情況是默認的渐白,可以用memcache把這種數(shù)據(jù)放到內(nèi)存里面。請參考web集群時利用memcache來同步session?
注意:session產(chǎn)生的session_id放在cookie里面纯衍,如果用戶把cookie禁止掉,是不是session也不能用了呢瓦堵?禁止掉cookie后菇用,session當(dāng)然可以用应结,不能通過其他的方式獲取這個session_id,比如跟在url后面鹅龄,或者以表單形式提交到服務(wù)器,從而使服務(wù)器端了解客戶端的狀態(tài)
當(dāng)客戶端向服務(wù)器發(fā)出請求時迎卤,要求服務(wù)器端產(chǎn)生一個session時蜗搔,服務(wù)器端會先檢查一下,客戶端的cookie里面有沒有session_id樟凄,是否已經(jīng)過期。如果有這樣的session_id的話汰现,服務(wù)器端會根據(jù)cookie里的session_id把服務(wù)器的session檢索出來叔壤。如果沒有這樣的session_id的話,服務(wù)器端會重新建立一個嗅战。PHPSESSID是一串加了密的字符串俺亮,它的生成按照一定的規(guī)則來執(zhí)行。同一客戶端啟動二次session_start的話厌漂,session_id是不一樣的斟珊。
3.session和cookie誰更安全
就個人而言囤踩,我覺得session更安全一點晓褪,我以下幾點看法。
1勤庐,如果session和cookie一樣安全的話愉镰,二者就沒有并要同時存在了钧汹,只要cookie就好了,讓客戶端來分提服務(wù)器的負擔(dān)碗降,并且對于用戶來說又是透明的。何樂而不為呢讼渊。cookie主要前后端都可以修改,而session不行菱皆,也不需要通過協(xié)議傳遞笔咽。
2,session的sessionID是放在cookie里拯田,要想功破session的話甩十,第一要功破cookie。功破cookie后侣监,你要得到 sessionID,sessionID是要有人登錄橄霉,或者啟動session_start才會有,你不知道什么時候會有人登錄姓蜂。第二钱慢,sessionID是加密的,第二次session_start的時候懒棉,前一次的sessionID就沒有用了览绿,session過期時sessionid也會失效,想在短時間內(nèi)功破加了密的 sessionID很難享钞。session是針對某一次通信而言栗竖,會話結(jié)束session也就隨著消失了,而真正的cookie存在于客戶端硬盤上的一個文本文件添吗,誰安全很顯然了份名。
3僵腺,如果session這么容易被功破,這么不安全的話普监,我想現(xiàn)有的絕大部分網(wǎng)站都不安全了琉兜。