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