设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
立即注册
只需一步,快速开始
快捷导航
登录
注册
论坛首页
BBS
建站模版
微站设计
虚拟主机
企业邮箱
博客日志
Blog
搜索
搜索
搜索
热搜
长春
优惠
活动
做网站
本版
帖子
用户
本版
帖子
用户
请
登录
后使用快捷导航
没有帐号?
立即注册
道具
勋章
任务
留言板
设置
我的收藏
退出
时时商务社区
»
论坛首页
›
建站资源
›
建站技术
›
如何让用户可以正常登录,同时不怕数据库被盗? ...
返回列表
查看:
1524
|
回复:
0
如何让用户可以正常登录,同时不怕数据库被盗?
[复制链接]
网络通达
当前离线
积分
7881
2647
主题
2647
帖子
7881
积分
论坛元老
论坛元老, 积分 7881, 距离下一级还需 9992118 积分
论坛元老, 积分 7881, 距离下一级还需 9992118 积分
积分
7881
发消息
电梯直达
楼主
发表于 2018-2-17 16:42:59
|
只看该作者
|
倒序浏览
|
阅读模式
西部数码
(west.cn)10月21日讯:每个网站都会设计自己的帐号系统,用户不管是通过QQ还是微信登录过来的,大多数网站都是想把他们转入到自己的帐号系统,因为这样估值的时候,这个用户才是你的用户,才好把故事讲好。那这些用户名和密码该如何存储才安全呢?或者说即时被「脱裤」了,如何才能不被黑产利用呢?
最近两年曝光的事件,发现有几个公司的密码库居然是明文存储的,也就是“果果,123456”这样的存储方式,小学生都看得懂,直接可以登录了,还谈何安全。
具体是那几个公司就不说了,以免有为他们做广告,帮助他们东山再起的嫌疑(东山再起运用了夸张的修辞手法,你懂的,我是吹了个牛逼)。
所以,问题抽象为——如何让用户可以正常登录,同时不怕数据库被盗呢?先看看如下图最原始的数据库设计。
最原始的数据库设计肯定是这样的,想都不用想,被攻破,所有用户密码就泄漏了,小明和小红所有的隐私也都泄漏了。
程序员不服输,那我不让Password字段是密码不就可以了,于是变为了这样,密码是做了MD5(MD5传送门:名词解释:时间戳、MD5、GUID)之后的密文,这样用户登录的时候输入123,后台对比Md5(123)是不是202cb****这段数据,就能证明输入正确与否了。
理论上MD5是单向的,也就是一个字符串会生成一个唯一的MD5码(有开发同学就别较真了,我知道理论上不唯一会冲突,但概率非常小,产品经理请继续认为基本唯一),这种情况下,数据库泄漏了,有风险吗?
答案是有风险,因为还有一帮程序员更聪明,发明了叫彩虹表的东西,彩虹表是把字符串和这些MD5值对应起来做了一个大数据库,也就是知道了202cb****这段数字之后,会反向查找出字符串,也就拿到了明文的密码。这个彩虹表一般都是上百个G的数据,所以用MD5或者SHA这些算法来保护密码也有漏洞。
程序员又不服,继续探索新的方法,客官注意了,我们马上进入到高潮部分,讲述如何用「加盐」来解决这个问题。
如上图所示,我们加了一个新的字段叫Salt,翻译过来就是盐,这个字段是用户注册的时候随机产生的一个字符串,所以这回我们生成数据库中的密码就是这样生成的:Md5(“123” + “jakldsfjn234jkl234jkl;123″)=6bbf7f8dd1f7dd3d7c03182620ba312f,当用户输入123的密码时,后台也用这个算法来验证是不是可以正常登录。
假设数据库又被窃取了,这个时候拿到的密码库的Password字段是两个字符串拼接的Md5值,这个时候由当前的密码会得到“123” + “jakldsfjn234jkl234jkl;123”的字符串拼接的值,但是要区分出哪些部分是密码成本是非常高的,而且这个salt可以夹杂在123这个字符串的任何位置,甚至可以将盐分开比如1前面放三个字符,2后面两个字符,剩下的接到3的结尾。
数学推理,果果也没有求证和推演过,总之时间成本会令这种破解收益非常非常小,从而保护了密码库的安全
来源链接:http://www.woshipm.com/pd/432539.html
分享到:
QQ好友和群
QQ空间
腾讯微博
腾讯朋友
收藏
0
回复
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
用户反馈
客户端