盡量完全避免會(huì)話數(shù)據(jù),必要時(shí),可以考慮把數(shù)據(jù)放在用戶的瀏覽器中。適用于任何需要會(huì)話數(shù)據(jù)來實(shí)現(xiàn)好用戶體驗(yàn)的情形。采用cookie在用戶的瀏覽器中存放會(huì)話數(shù)據(jù)。把會(huì)話數(shù)據(jù)存放在用戶的瀏覽器中,可以使服務(wù)器池中的任何一個(gè)Web服務(wù)器都能為該用戶的請求提供服務(wù),而且你的系統(tǒng)也不必再為它提供存儲(chǔ)空間了。用cookie存放會(huì)話數(shù)據(jù)是種常見的方法,而且具有易于擴(kuò)展的優(yōu)點(diǎn),但也有一些缺點(diǎn)。最關(guān)鍵的缺點(diǎn)就是未加密的cookie可以被輕易捕獲,用于登錄用戶的賬戶。
如果必須為用戶保留會(huì)話,那么可以在用戶的瀏覽器中這樣做。在我們討論如何做之前,首先來看看這種方法的利弊。把會(huì)話數(shù)據(jù)存放在用戶瀏覽器中的一個(gè)好處是,你的系統(tǒng)就不必存儲(chǔ)會(huì)話數(shù)據(jù)了。在系統(tǒng)中保存會(huì)話數(shù)據(jù)會(huì)有大量的存儲(chǔ)和讀取開銷。不存儲(chǔ)會(huì)話數(shù)據(jù),系統(tǒng)就會(huì)減輕很多存儲(chǔ)和工作量上的負(fù)擔(dān)。該方法的第一個(gè)好處是,該瀏覽器的請求可以由服務(wù)器池中的任何一臺(tái)服務(wù)器處理。,會(huì)把公共數(shù)據(jù)存成的瀏覽器中,那么服務(wù)器池中的任意一臺(tái)服務(wù)器都可以處理該瀏覽器的請求。
當(dāng)然,任何事情都有其折中之處。該方法的一個(gè)缺點(diǎn)是必須在瀏覽器和需要該數(shù)據(jù)的服務(wù)器之間往返地傳遞數(shù)據(jù)。對每一個(gè)請求都要往返地移動(dòng)數(shù)據(jù)成本很高,尤其是數(shù)據(jù)量逐漸變大的情況。注意,不要忽略上面的后半句。雖然現(xiàn)在的會(huì)話數(shù)據(jù)量可能不太大,但幾十個(gè)程序員訪問存儲(chǔ)在cookie中的數(shù)據(jù),在幾十次發(fā)布后,你就會(huì)想為什么頁面載入這么慢呢?另一個(gè)非常嚴(yán)重的壞處是由Firefox的插件Firesheep暴露出來的,即在開放的WiFi網(wǎng)絡(luò)中會(huì)話數(shù)據(jù)很容易被捕捉到,用于惡意登錄別人的賬戶。利用上述插件,來自任何常用的站點(diǎn)(如Google、FacebookTwitter和Amazon等)的會(huì)話cookie都可能受危害。我們會(huì)給出一種方法來保護(hù)用戶的cookie不受這種類型的黑客攻擊,這種攻擊通常叫作會(huì)話劫持,不過首先還是來談?wù)勅绾卧跒g覽器cookie中存儲(chǔ)會(huì)話數(shù)據(jù)。在瀏覽器中存儲(chǔ)會(huì)話數(shù)據(jù)簡單明了。在PHP中,如下面的示例所示,就是用cookie名、值、過期日時(shí)間、路徑、域和是否加密(是否應(yīng)該只通要銷毀它,只需要用同樣的設(shè)置把過期時(shí)間改為time()-3600即2一過HTTPS設(shè)置它)作為參數(shù)調(diào)用setcookie函數(shù)。在用完該cookie后,即把過期時(shí)間設(shè)置為為1小日時(shí)之前。
有些會(huì)話存儲(chǔ)在多個(gè)cookie中,而另一些會(huì)話數(shù)據(jù)則存儲(chǔ)在一個(gè)cookie中。一個(gè)要考慮的因素是cookie的大大小。根據(jù)RFC2965,瀏覽器應(yīng)該支持至少4KB的cookie,且應(yīng)該能支持同一個(gè)域中的20個(gè)cookie,ni但大多數(shù)瀏覽器把這些作為支持的上限。根據(jù)我們前面的觀點(diǎn),cookie越大,頁面載人就會(huì)越慢,因?yàn)閷τ诿總€(gè)請求都要往返地傳遞會(huì)話數(shù)據(jù)。
既然我們使用cookie支持會(huì)話,那么就要使它們盡可能小,以便系統(tǒng)能夠擴(kuò)展。接下來的問題是如何保護(hù)我們的用戶,使他們免于遭受挾持?顯然,你可以利用HTTPS傳遞一切頁面和cookie。HTTPS采用的安全套接層(SSL)協(xié)議,要求對所有的通信和請求進(jìn)行加密和解密。然而這可能是銀行站點(diǎn)的需求,未必適用于新聞或社交網(wǎng)站。我們推薦一種至少利用兩個(gè)cookie的方法。一個(gè)cookie是授權(quán)cookie,在每個(gè)HTTP頁面上使用Javascript調(diào)用通過HTPS請求,如下所示。這樣就會(huì)使大部分?jǐn)?shù)據(jù)(內(nèi)容、CSS、腳本等)都通過未加密的HTP協(xié)議傳送,而只有授權(quán)cookie才通過HTTPS傳送。
要獲得終極的可擴(kuò)展性,我們還是推薦避免使用會(huì)話。但我們理解情況并非總是如此。對于那些一定要有會(huì)話的情況,我們推薦把
網(wǎng)站設(shè)計(jì)會(huì)話數(shù)據(jù)存儲(chǔ)在用戶的瀏覽器上。在實(shí)現(xiàn)這點(diǎn)時(shí),控制cookie數(shù)據(jù)的大小至關(guān)重要。大量的會(huì)話數(shù)據(jù)會(huì)降低頁面載入的性能以及系統(tǒng)中的Web服務(wù)器的性能。
網(wǎng)站名稱:盡可能在瀏覽器端維護(hù)會(huì)話
轉(zhuǎn)載注明:http://jinyejixie.com/news6/149406.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)站營銷、小程序開發(fā)、網(wǎng)站導(dǎo)航、網(wǎng)站維護(hù)、品牌網(wǎng)站制作
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源:
創(chuàng)新互聯(lián)