如何讓用戶可以正常登錄,同時不怕數(shù)據(jù)庫被盜?

4 評論 9602 瀏覽 41 收藏 6 分鐘
🔗 B端产品经理需要进行售前演示、方案定制、合同签订等,而C端产品经理需要进行活动策划、内容运营、用户激励等

每個網(wǎng)站都會設計自己的帳號系統(tǒng),用戶不管是通過QQ還是微信登錄過來的,大多數(shù)網(wǎng)站都是想把他們轉入到自己的帳號系統(tǒng),因為這樣估值的時候,這個用戶才是你的用戶,才好把故事講好。那這些用戶名和密碼該如何存儲才安全呢?或者說即使被「脫褲」了,如何才能不被黑產(chǎn)利用呢?

最近兩年曝光的事件,發(fā)現(xiàn)有幾個公司的密碼庫居然是明文存儲的,也就是“果果,123456”這樣的存儲方式,小學生都看得懂,直接可以登錄了,還談何安全。

具體是那幾個公司就不說了,以免有為他們做廣告,幫助他們東山再起的嫌疑(東山再起運用了夸張的修辭手法,你懂的,我是吹了個牛逼)。

所以,問題抽象為——如何讓用戶可以正常登錄,同時不怕數(shù)據(jù)庫被盜呢?先看看如下圖最原始的數(shù)據(jù)庫設計。

1

最原始的數(shù)據(jù)庫設計肯定是這樣的,想都不用想,被攻破,所有用戶密碼就泄漏了,小明和小紅所有的隱私也都泄漏了。

程序員不服輸,那我不讓Password字段是密碼不就可以了,于是變?yōu)榱诉@樣,密碼是做了MD5(MD5傳送門:名詞解釋:時間戳、MD5、GUID)之后的密文,這樣用戶登錄的時候輸入123,后臺對比Md5(123)是不是202cb****這段數(shù)據(jù),就能證明輸入正確與否了。

2

理論上MD5是單向的,也就是一個字符串會生成一個唯一的MD5碼(有開發(fā)同學就別較真了,我知道理論上不唯一會沖突,但概率非常小,產(chǎn)品經(jīng)理請繼續(xù)認為基本唯一),這種情況下,數(shù)據(jù)庫泄漏了,有風險嗎?

答案是有風險,因為還有一幫程序員更聰明,發(fā)明了叫彩虹表的東西,彩虹表是把字符串和這些MD5值對應起來做了一個大數(shù)據(jù)庫,也就是知道了202cb****這段數(shù)字之后,會反向查找出字符串,也就拿到了明文的密碼。這個彩虹表一般都是上百個G的數(shù)據(jù),所以用MD5或者SHA這些算法來保護密碼也有漏洞。

程序員又不服,繼續(xù)探索新的方法,客官注意了,我們馬上進入到高潮部分,講述如何用「加鹽」來解決這個問題。

3

如上圖所示,我們加了一個新的字段叫Salt,翻譯過來就是鹽,這個字段是用戶注冊的時候隨機產(chǎn)生的一個字符串,所以這回我們生成數(shù)據(jù)庫中的密碼就是這樣生成的:Md5(“123” + “jakldsfjn234jkl234jkl;123″)=6bbf7f8dd1f7dd3d7c03182620ba312f,當用戶輸入123的密碼時,后臺也用這個算法來驗證是不是可以正常登錄。

假設數(shù)據(jù)庫又被竊取了,這個時候拿到的密碼庫的Password字段是兩個字符串拼接的Md5值,這個時候由當前的密碼會得到“123” + “jakldsfjn234jkl234jkl;123”的字符串拼接的值,但是要區(qū)分出哪些部分是密碼成本是非常高的,而且這個salt可以夾雜在123這個字符串的任何位置,甚至可以將鹽分開比如1前面放三個字符,2后面兩個字符,剩下的接到3的結尾。

數(shù)學推理,果果也沒有求證和推演過,總之時間成本會令這種破解收益非常非常小,從而保護了密碼庫的安全。

#專欄作家#

給產(chǎn)品經(jīng)理講技術,微信公眾號(pm_teacher),人人都是產(chǎn)品經(jīng)理專欄作家。資深程序猿,專注客戶端開發(fā)若干年,對前端、后臺技術略懂,熱衷于對新的科技領域的探索。

本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉載。

更多精彩內(nèi)容,請關注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 還可以sha1(md5)混合加密。

    來自廣東 回復
  2. 果果你跑到這里來啦

    來自北京 回復
  3. 產(chǎn)品經(jīng)理技術科普文

    來自廣東 回復
  4. 受小弟一拜

    來自浙江 回復
专题
18821人已学习12篇文章
如何设计出一个抓住他人眼球的feed流 ?feed流的组成元素以及常见的feed流样式?本专题的文章提供了对于feed流设计的思考。
专题
36838人已学习13篇文章
如何让你的事件营销深入人心?
专题
13854人已学习12篇文章
人力资源管理系统,帮助企业管理和维护其人力资源。本专题的文章分享了人力资源管理系统的设计指南。
专题
11678人已学习12篇文章
2023年双十一逐渐临近,各个电商平台也摩拳擦掌开始准备。本专题的文章分享了双十一营销玩法。
专题
16693人已学习16篇文章
对于很多软件工程师来说,工作内容都与界面设计有很大的关联。本专题的文章分享了界面设计方法。