我相信到目前為止,有很多PHP系統(tǒng)仍然使用$\u會(huì)話作為會(huì)話方法。讓我們先簡(jiǎn)單介紹一下會(huì)話的原理(熟悉的學(xué)生可以直接往下看)。會(huì)話的本質(zhì)是:cookie(key)+服務(wù)器存儲(chǔ)環(huán)境(value)。也就是說,通過cookie(有時(shí)是url參數(shù))作為一個(gè)鍵,通過它可以找到服務(wù)器的相應(yīng)數(shù)據(jù),數(shù)據(jù)可以是:file(默認(rèn))、mysql、memcache等。其中,MC是分布式場(chǎng)景中最常用的。所以,如果我們要教唆人們放棄傳統(tǒng)的方式,我們就需要找出問題的嚴(yán)重性。1。當(dāng)并發(fā)性很大時(shí),它會(huì)占用大量資源(每個(gè)登錄用戶都需要注冊(cè)一次)。2。當(dāng)并發(fā)性較大時(shí),用戶被淘汰的概率增大(當(dāng)內(nèi)存不足時(shí),mc將使lru算法能夠清除內(nèi)存,從而導(dǎo)致一些用戶被推薦)。三。資源浪費(fèi)率很高(需要額外的機(jī)器和用戶登錄一次后仍然需要保護(hù))。在挑出這么多荊棘之后,我們放棄了mc(部分原因是它很差),使用了一個(gè)成本更低、簡(jiǎn)單的解決方案:可逆加密算法。目前,我們使用AES算法來完成我們的工作。加密算法如下:傳入要加密的數(shù)據(jù)和加密因子,返回加密字符串。這里還支持base64加密的要求。相應(yīng)的解密算法如下:在這兩種方法中,我們使用序列化和反序列化來支持?jǐn)?shù)組,以便對(duì)數(shù)組進(jìn)行加密。對(duì)于數(shù)據(jù)加密,我們選擇PHP附帶的序列化。與JSON相比,速度更快,加密后的結(jié)果更小。[那么,使用可逆加密算法的好處是什么?1。沒有額外的數(shù)據(jù)提取服務(wù)器,性能更好,穩(wěn)定性更好。不需要額外的服務(wù),就可以在本地完成,減少了套接字請(qǐng)求和對(duì)服務(wù)的依賴,因此性能和穩(wěn)定性更好。2。便宜不言而喻。三。無(wú)限擴(kuò)展,沒有一致性問題,分布式場(chǎng)景更適合于明顯的任意擴(kuò)展,沒有存儲(chǔ),因此沒有一致性問題。4。應(yīng)用范圍更廣,除PC機(jī)外,還支持應(yīng)用程序,可自由定制到期時(shí)間會(huì)話。應(yīng)用程序沒有著陸,但一般的MC方案不能滿足。因此,我們采用可逆加密算法??赡婕用芩惴ǖ膯栴}在哪里?(1)如果密鑰丟失(或解碼),會(huì)發(fā)生什么情況?在這種情況下,只能替換密鑰,代價(jià)是所有系統(tǒng)的用戶都需要重新登錄。這個(gè)價(jià)格幾乎不能接受。2。數(shù)據(jù)存儲(chǔ)大小的限制不能加密太多的數(shù)據(jù)。通常只加密核心數(shù)據(jù),如用戶ID、過期時(shí)間等,太多的數(shù)據(jù)會(huì)浪費(fèi)帶寬??偟膩碚f,我們認(rèn)為風(fēng)險(xiǎn)是可控的,成本是可以接受的?!靖倪M(jìn)方案】對(duì)于上述算法,我們將來會(huì)有一些改進(jìn)的想法,主要是增加破解的難度,降低升級(jí)的復(fù)雜性。目前,我們集中在二次加密上,通過少量的工作,使得解碼器需要做大量的工作。云筆,專注于互聯(lián)網(wǎng)技術(shù)的深入研究與開發(fā)。
«
愛錢樂隊(duì):優(yōu)質(zhì)資產(chǎn)汽車金融先驅(qū)
|
易到司機(jī)討債:欠錢的成了“爺爺”,要賬的倒成了孫子
»