如果必須為用戶(hù)保留會(huì )話(huà),那么可以在用戶(hù)的瀏覽器中這樣做。在我們討論如何做之前,首先來(lái)看看這種方法的利弊。把會(huì )話(huà)數據存放在用戶(hù)瀏覽器中的一個(gè)好處是,你的系統就不必存儲會(huì )話(huà)數據了。在系統中保存會(huì )話(huà)數據會(huì )有大量的存儲和讀取開(kāi)銷(xiāo)。不存儲會(huì )話(huà)數據,系統就會(huì )減輕很多存儲和工作量上的負擔。該方法的第一個(gè)好處是,該瀏覽器的請求可以由服務(wù)器池中的任何一臺服務(wù)器處理。,會(huì )把公共數據存成的瀏覽器中,那么服務(wù)器池中的任意一臺服務(wù)器都可以處理該瀏覽器的請求。

當然,任何事情都有其折中之處。該方法的一個(gè)缺點(diǎn)是必須在瀏覽器和需要該數據的服務(wù)器之間往返地傳遞數據。對每一個(gè)請求都要往返地移動(dòng)數據成本很高,尤其是數據量逐漸變大的情況。注意,不要忽略上面的后半句。雖然現在的會(huì )話(huà)數據量可能不太大,但幾十個(gè)程序員訪(fǎng)問(wèn)存儲在 cookie中的數據,在幾十次發(fā)布后,你就會(huì )想為什么頁(yè)面載入這么慢呢?另一個(gè)非常嚴重的壞處是由 Firefox的插件 Firesheep暴露出來(lái)的,即在開(kāi)放的WiFi網(wǎng)絡(luò )中會(huì )話(huà)數據很容易被捕捉到,用于惡意登錄別人的賬戶(hù)。利用上述插件,來(lái)自任何常用的站點(diǎn)(如 Google、 Facebook Twitter和 Amazon等)的會(huì )話(huà) cookie都可能受危害。我們會(huì )給出一種方法來(lái)保護用戶(hù)的 cookie不受這種類(lèi)型的黑客攻擊,這種攻擊通常叫作會(huì )話(huà)劫持,不過(guò)首先還是來(lái)談?wù)勅绾卧跒g覽器 cookie中存儲會(huì )話(huà)數據。在瀏覽器中存儲會(huì )話(huà)數據簡(jiǎn)單明了。在PHP中,如下面的示例所示,就是用 cookie名、值、過(guò)期日時(shí)間、路徑、域和是否加密(是否應該只通要銷(xiāo)毀它,只需要用同樣的設置把過(guò)期時(shí)間改為time()-3600即2一過(guò)HTTPS設置它)作為參數調用setcookie函數。在用完該cookie后,即把過(guò)期時(shí)間設置為為1小日時(shí)之前。
有些會(huì )話(huà)存儲在多個(gè) cookie中,而另一些會(huì )話(huà)數據則存儲在一個(gè)cookie中。一個(gè)要考慮的因素是 cookie的最大大小。根據RFC2965,瀏覽器應該支持至少4KB的 cookie,且應該能支持同一個(gè)域中的20個(gè)cookie, ni但大多數瀏覽器把這些作為支持的上限。根據我們前面的觀(guān)點(diǎn),cookie越大,頁(yè)面載人就會(huì )越慢,因為對于每個(gè)請求都要往返地傳遞會(huì )話(huà)數據。
既然我們使用 cookie支持會(huì )話(huà),那么就要使它們盡可能小,以便系統能夠擴展。接下來(lái)的問(wèn)題是如何保護我們的用戶(hù),使他們免于遭受挾持?顯然,你可以利用HTTPS傳遞一切頁(yè)面和cookie。HTTPS采用的安全套接層(SSL)協(xié)議,要求對所有的通信和請求進(jìn)行加密和解密。然而這可能是銀行站點(diǎn)的需求,未必適用于新聞或社交網(wǎng)站。我們推薦一種至少利用兩個(gè)cookie的方法。一個(gè)cookie是授權cookie,在每個(gè)HTTP頁(yè)面上使用 Javascript調用通過(guò)HTPS請求,如下所示。這樣就會(huì )使大部分數據(內容、CSS、腳本等)都通過(guò)未加密的HTP協(xié)議傳送,而只有授權cookie才通過(guò)HTTPS傳送。
要獲得終極的可擴展性,我們還是推薦避免使用會(huì )話(huà)。但我們理解情況并非總是如此。對于那些一定要有會(huì )話(huà)的情況,我們推薦把網(wǎng)站設計會(huì )話(huà)數據存儲在用戶(hù)的瀏覽器上。在實(shí)現這點(diǎn)時(shí),控制cookie數據的大小至關(guān)重要。大量的會(huì )話(huà)數據會(huì )降低頁(yè)面載入的性能以及系統中的Web服務(wù)器的性能。
本文地址:http://www.havencoinwallet.com//article/3516.html