登入服的設計 功能需求

2021-08-31 12:52:49 字數 1228 閱讀 7272

正如我們在前面曾討論過的,登入服要實現的功能相當簡單,就是帳號驗證。為了便於描述,我們暫不引入那些討論過的優化手段,先以最簡單的方式實現,另外也將基本以mangos的**作為參考來進行描述。

想象一下帳號驗證的實現方法,最容易的那就是把使用者輸入的明文用帳號和密碼直接發給登入服,伺服器根據帳號從資料庫中取出密碼,與使用者輸入的密碼相比較。

這個方法存在的安全隱患實在太大,明文的密碼傳輸太容易被截獲了。那我們試著在傳輸之前先加一下密,為了伺服器能進行密碼比較,我們應該採用乙個可逆的加密演算法,在伺服器端把這個加密後的字串還原為原始的明文密碼,然後與資料庫密碼進行比較。既然是乙個可逆的過程,那外掛程式製作者總有辦法知道我們的加密過程,所以,這個方法仍不夠安全。

哦,如果我們只是希望密碼不可能被還原出來,那還不容易嗎,使用乙個不可逆的雜湊演算法就行了。使用者在登入時傳送給伺服器的是明文的帳號和經雜湊後的不可逆密碼串,伺服器取出密碼後也用同樣的演算法進行雜湊後再進行比較。比如,我們就用使用最廣泛的md5演算法吧。噢,不要管那個王小雲的什麼**,如果我真有那麼好的運氣,早中500w了,還用在這考慮該死的伺服器設計嗎?

似乎是乙個很完美的方案,外掛程式製作者再也偷不到我們的密碼了。慢著,外掛程式偷密碼的目的是什麼?是為了能用我們的帳號進遊戲!如果我們總是用一種固定的演算法來對密碼做雜湊,那外掛程式只需要記住這個雜湊後的字串就行了,用這個做密碼就可以成功登入。

嗯,這個問題好解決,我們不要用固定的演算法進行雜湊就是了。只是,問題在於伺服器與客戶端採用的雜湊演算法得出的字串必須是相同的,或者是可驗證其是否匹配的。很幸運的是,偉大的數學字們早就為我們準備好了很多優秀的這類演算法,而且經理論和實踐都證明他們也確實是足夠安全的。

這其中之一是乙個叫做srp的演算法,全稱叫做secure remote password,即安全遠端密碼。wow使用的是第6版,也就是srp6演算法。有關其中的數學證明,如果有人能向我解釋清楚,並能讓我真正弄明白的話,我將非常感激。不過其**實現步驟倒是並不複雜,mangos中的**也還算清晰,我們也不再贅述。

登入服除了帳號驗證外還得提供另一項功能,就是在玩家的帳號驗證成功後返回給他乙個伺服器列表讓他去選擇。這個列表的狀態要定時重新整理,可能有新的遊戲世界開放了,也可能有些遊戲世界非常不幸地停止運轉了,這些狀態的變化都要盡可能及時地讓玩家知道。不管發生了什麼事,使用者都有權利知道,特別是對於付過費的使用者來說,我們不該藏著掖著,不是嗎?

這個遊戲世界列表的功能將由大區服來提供,具體的結構我們在之前也描述過,這裡暫不做討論。登入服將從大區服上獲取到的遊戲世界列表發給已驗證通過的客戶端即可。好了,登入服要實現的功能就這些,很簡單,是吧。

登入服的設計 功能需求

正如我們在前面曾討論過的,登入服要實現的功能相當簡單,就是帳號驗證。為了便於描述,我們暫不引入那些討論過的優化手段,先以最簡單的方式實現,另外也將基本以mangos的 作為參考來進行描述。想象一下帳號驗證的實現方法,最容易的那就是把使用者輸入的明文用帳號和密碼直接發給登入服,伺服器根據帳號從資料庫中...

如何設計安全的使用者登入功能

使用者登入功能是web應用系統具備的最基本的功能,關係到使用者資料和應用系統資料的安全,設計乙個安全的使用者登入功能,涉及到以下幾個方面的內容。一 老生常談 口令 1.口令長度與複雜度限制 限制使用者輸入一些非常容易被破解的口令,比如qwert asdfg 123456 password之類的,參考...

登入功能的測試用例設計

一.介面測試設計要點 1.介面的設計風格是否與ui的設計風格統一,布局是否合理,按鈕是否對齊 2.web的話,對頁面縮放登入模組是否與縮放比例縮放 3.介面中的文字簡潔易懂,沒有錯別字 二.功能測試設計要點 1.輸入已註冊的使用者名稱和正確的密碼,驗證是否成功登入 2.輸入已註冊的使用者名稱和不正確...