必威体育Betway必威体育官网
当前位置:首页 > 运营推广

如何让用户可以正常登录,同时不怕数据库被盗?

时间:2018-07-18 12:32:02来源:运营推广作者:seo实验室小编阅读:69次「手机版」
 

密码库

每个网站都会设计自己的帐号系统用户不管是通过QQ还是微信登录过来的,大多数网站都是想把他们转入到自己的帐号系统,因为这样估值的时候,这个用户才是你的用户,才好把故事讲好。那这些用户名和密码该如何存储才安全呢?或者说即使被「脱裤」了,如何才能不被黑产利用呢?

mimajishu

最近两年曝光的事件,发现有几个公司的密码库居然是明文存储的,也就是“果果,123456”这样的存储方式,小学生都看得懂,直接可以登录了,还谈何安全。

具体是那几个公司就不说了,以免有为他们做广告,帮助他们东山再起的嫌疑(东山再起运用了夸张的修辞手法,你懂的,我是吹了个牛逼)。

所以,问题抽象为——如何让用户可以正常登录,同时不怕数据库被盗呢?先看看如下图最原始的数据库设计。

1

最原始的数据库设计肯定是这样的,想都不用想,被攻破,所有用户密码就泄漏了,小明和小红所有的隐私也都泄漏了。

程序员不服输,那我不让Password字段是密码不就可以了,于是变为了这样,密码是做了MD5(MD5传送门:名词解释:时间戳、MD5、GUID)之后的密文,这样用户登录的时候输入123,后台对比Md5(123)是不是202cb****这段数据,就能证明输入正确与否了。

2

理论上MD5是单向的,也就是一个字符串会生成一个唯一的MD5码(有开发同学就别较真了,我知道理论上不唯一会冲突,但概率非常小,产品经理请继续认为基本唯一),这种情况下,数据库泄漏了,有风险吗?

答案是有风险,因为还有一帮程序员更聪明,发明了叫彩虹表的东西,彩虹表是把字符串和这些MD5值对应起来做了一个大数据库,也就是知道了202cb****这段数字之后,会反向查找出字符串,也就拿到了明文的密码。这个彩虹表一般都是上百个G的数据,所以用MD5或者SHA这些算法来保护密码也有漏洞

程序员又不服,继续探索新的方法,客官注意了,我们马上进入到高潮部分,讲述如何用「加盐」来解决这个问题。

3

如上图所示,我们加了一个新的字段叫Salt,翻译过来就是盐,这个字段是用户注册的时候随机产生的一个字符串,所以这回我们生成数据库中的密码就是这样生成的:Md5(“123” + “jakldsfjn234jkl234jkl;123″)=6bbf7f8dd1f7dd3d7c03182620ba312f,当用户输入123的密码时,后台也用这个算法来验证是不是可以正常登录。

假设数据库又被窃取了,这个时候拿到的密码库的Password字段是两个字符串拼接的Md5值,这个时候由当前的密码会得到“123” + “jakldsfjn234jkl234jkl;123”的字符串拼接的值,但是要区分出哪些部分是密码成本是非常高的,而且这个salt可以夹杂在123这个字符串的任何位置,甚至可以将盐分开比如1前面放三个字符,2后面两个字符,剩下的接到3的结尾。

数学推理,果果也没有求证和推演过,总之时间成本会令这种破解收益非常非常小,从而保护了密码库的安全。

关于作者:

给产品经理讲技术微信公众号(pm_teacher),资深程序猿,专注客户端开发若干年,对前端、后台技术略懂,热衷于对新的科技领域的探索。

相关阅读

微信开发者工具首次登录,显示网络连接失败

微信开发者工具首次登录,显示网络连接失败首次打开是下面这样电脑是64位的操作系统,所以一直下的是64位的版本,查看网上的解决办法:删

产品案例:小程序的登录注册体系设计

小程序给世人的第一印象——高流量、易获客,冲击了一大波企业的肾上腺素,于是风风火火投入小程序生态的建设中,近乎无法自拔。腾讯微

拉勾网登录问题

拉钩登录问题,在参考别人的博客后,解决啦class lagouSpider(CrawlSpider): name = 'lagou' allowed_domains = ['www.lagou

余额宝被盗有赔偿吗?具体如何赔偿

余额宝被盗有赔偿吗?很多卖家都想要知道余额宝被盗有赔偿吗,具体如果被盗又如何去寻求赔偿,关系着各位具体的自身利益。今天就让小

如何使用支付宝账号授权登录网站

本周在项目开发中使用到了支付宝授权登录(一键登录)我们的网站,周末做一下总结: 0.总体思路 为防止各位朋友看迷糊,先说一下整体执

分享到:

栏目导航

推荐阅读

热门阅读