APP登錄方案設(shè)計(一)

App一般都需要用戶的登錄操作。登錄惠啄,就需要用到用戶名和密碼慎恒。為了安全起見,暴露明文密碼的次數(shù)越少越好撵渡。這里有兩個問題:1融柬,怎么能最大程度避免泄露用戶的密碼呢?2趋距,在登錄后粒氧,app后端又怎么去驗證和維持用戶的登錄狀態(tài)呢?本文先講述第一個問題--如何最大程度避免用戶密碼泄露节腐。第二個問題放在下篇外盯。

密碼存儲

  1. 用戶密碼必須不能明文存儲摘盆。如果數(shù)據(jù)庫泄露,那么所有用戶的密碼就會被泄露饱苟,存在非常高的安全風(fēng)險孩擂。
  2. 用戶密碼不能直接hash存儲。hash破解現(xiàn)在已經(jīng)不是一件難事箱熬,方法有查表法类垦、反向查表法、彩虹表等城须。
  3. 在存儲用戶密碼的時候蚤认,一定要考慮的是加鹽hash。所謂 鹽(salt) 實際是一個隨機字符串酿傍,在用戶密碼的前面后者后面加一個隨機字符串烙懦,然后再hash,即使hash被破解赤炒,也能保證用戶密碼不丟失氯析。加鹽hash需要一些基本原則:
    • 鹽值永遠(yuǎn)不要重復(fù)使用;
    • 每個用戶的每一個密碼都要使用獨一無二的鹽值莺褒;
    • 用戶每次創(chuàng)建帳號或更改密碼時掩缓,密碼應(yīng)采用一個新的隨機鹽值;
    • 鹽值需要單獨存儲遵岩,或者固定鹽值長度你辣,然后固定放在 hash結(jié)果 的某個位置
    • 鹽值不要太短,建議32位以上
  4. MD5 尘执、SHA1舍哄、SHA256、SHA512誊锭、RipeMD表悬、WHIRLPOOL、SHA3等hash算法丧靡,都屬于快速加密hash函數(shù)蟆沫,他們的弱點在于,加密快温治,破解也快饭庞。建議使用 慢哈希函數(shù) 進行hash處理,如 PBKDF2 或 bcrypt的安全版本熬荆。 慢哈希函數(shù) 在hash的計算過程中舟山,也會變慢,但是這個速度是可以根據(jù)參數(shù)調(diào)整的,建議慢hash時間調(diào)整到200ms-500ms捏顺,如果速度過慢六孵,容易讓系統(tǒng)遭受ddos攻擊。
  5. 到這一步幅骄,系統(tǒng)還不是完全的安全。如果我們采用加密算法本今,比如 AES對稱加密拆座,對hash結(jié)果進行加密,那么只有知道秘鑰的人才能解密出hash結(jié)果冠息,然后才有機會對hash破解挪凑。但是,又引出了一個新問題:如何保證秘鑰的安全性逛艰?這個密鑰必須在任何情況下躏碳,即使系統(tǒng)因為漏洞被攻陷,也不能被攻擊者獲取散怖。如果攻擊者完全進入系統(tǒng)菇绵,密鑰不管存儲在何處,總能被找到镇眷。因此咬最,密鑰必須密鑰必須被存儲在外部系統(tǒng),例如專用于密碼驗證一個物理上隔離的服務(wù)端欠动,或者連接到服務(wù)端永乌,例如一個特殊的硬件設(shè)備。
  6. 如果被拖庫具伍,數(shù)據(jù)發(fā)生丟失翅雏,我們要做的第一件事應(yīng)該是:確定系統(tǒng)被暴露到什么程度,然后修復(fù)攻擊者利用的的漏洞人芽;在還沒有完全發(fā)生什么事情時望几,需要盡快通知用戶修改密碼,甚至強制用戶修改密碼啼肩;如果數(shù)據(jù)庫包括信用卡等信息橄妆,應(yīng)該通知用戶仔細(xì)檢查近期賬單甚至銷掉這張信用卡。

密碼傳輸

  1. 上面說的問題只是密碼存儲問題祈坠,實際上還要一個更嚴(yán)重的問題需要考慮害碾,既密碼的傳輸問題窘哈。用戶在注冊或者登陸時叹誉,需要將密碼傳遞到服務(wù)端锤躁。但是要嚴(yán)禁明文傳輸密碼璧亚。
  2. 建議的一種方案是痹屹,非對稱加密算法對密碼進行加密傳輸:
    • 用戶在傳輸密碼之前,先像服務(wù)器請求一個公鑰士聪;
    • 然后傳輸?shù)拿艽a是 使用 公鑰加密的 密碼某饰,而這個加密之后的密碼,只有用自己的私鑰才能解開剃袍;
    • 服務(wù)端使用私鑰解開密碼黄刚,然后加密存儲。
    • 這里面又涉及到兩個問題:1是私鑰的安全性存儲民效;2公鑰私鑰對 是否需要對每一次登錄或注冊都重新生成一對憔维? 從安全性來講,后者顯然會更好畏邢,而且公鑰业扒、私鑰有過期時間。
    • 具體的實現(xiàn)過程舒萎,這里不講程储。

基本原則

  1. 永遠(yuǎn)不要告訴用戶輸錯的究竟是用戶名還是密碼。
  2. 通用的提示:“無效的用戶名或密碼”臂寝。

好久沒寫文章了章鲤。希望以后能多學(xué)習(xí)一些東西,多寫一些交煞。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末咏窿,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子素征,更是在濱河造成了極大的恐慌集嵌,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件御毅,死亡現(xiàn)場離奇詭異根欧,居然都是意外死亡,警方通過查閱死者的電腦和手機端蛆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門凤粗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人今豆,你說我怎么就攤上這事嫌拣。” “怎么了呆躲?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵异逐,是天一觀的道長。 經(jīng)常有香客問我插掂,道長灰瞻,這世上最難降的妖魔是什么腥例? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮酝润,結(jié)果婚禮上燎竖,老公的妹妹穿的比我還像新娘。我一直安慰自己要销,他們只是感情好构回,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著疏咐,像睡著了一般捐凭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上凳鬓,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天,我揣著相機與錄音患民,去河邊找鬼缩举。 笑死,一個胖子當(dāng)著我的面吹牛匹颤,可吹牛的內(nèi)容都是我干的仅孩。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼印蓖,長吁一口氣:“原來是場噩夢啊……” “哼辽慕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起赦肃,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤溅蛉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后他宛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體船侧,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年厅各,在試婚紗的時候發(fā)現(xiàn)自己被綠了镜撩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡队塘,死狀恐怖袁梗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情憔古,我是刑警寧澤遮怜,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站投放,受9級特大地震影響奈泪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一涝桅、第九天 我趴在偏房一處隱蔽的房頂上張望拜姿。 院中可真熱鬧,春花似錦冯遂、人聲如沸蕊肥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽壁却。三九已至,卻和暖如春裸准,著一層夾襖步出監(jiān)牢的瞬間展东,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工炒俱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留盐肃,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓权悟,卻偏偏與公主長得像砸王,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子峦阁,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 2018-Read-Record 記錄我的2018學(xué)習(xí)歷程 文中首先解釋了加密解密的一些基礎(chǔ)知識和概念榔昔,然后通過一...
    NinthDay閱讀 11,266評論 8 105
  • 本文主要介紹移動端的加解密算法的分類驹闰、其優(yōu)缺點特性及應(yīng)用,幫助讀者由淺入深地了解和選擇加解密算法件豌。文中會包含算法的...
    蘋果粉閱讀 11,470評論 5 29
  • 文中首先解釋了加密解密的一些基礎(chǔ)知識和概念疮方,然后通過一個加密通信過程的例子說明了加密算法的作用,以及數(shù)字證書的出現(xiàn)...
    sunny沖哥閱讀 1,370評論 0 3
  • 文中首先解釋了加密解密的一些基礎(chǔ)知識和概念茧彤,然后通過一個加密通信過程的例子說明了加密算法的作用骡显,以及數(shù)字證書的出現(xiàn)...
    已認(rèn)證用戶閱讀 3,826評論 1 4
  • 數(shù)字證書原理 - 無恙 - 博客園 文中首先解釋了加密解密的一些基礎(chǔ)知識和概念,然后通過一個加密通信過程的例子說明...
    拉肚閱讀 1,659評論 0 3