首先Mysql的密码权限存储在mysql.user表中。我们不关注鉴权的部分,我们只关心身份认证,识别身份,后面的权限控制是很简单的事情。
创新互联建站专注为客户提供全方位的互联网综合服务,包含不限于网站设计、成都网站设计、萧县网络推广、微信平台小程序开发、萧县网络营销、萧县企业策划、萧县品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联建站为所有大学生创业者提供萧县建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com
在mysql.user表中有个authentication_string字段,存储的是密码的两次sha1值。
你可以用下面的语句,验证和mysql.user表中存储的是一致的。
select sha1(UNHEX(sha1(‘password’)))
以上就是服务端关于密码的存储,接下来是认证过程。
Mysql采用的是一种challenge/response(挑战-应答)的认证模式。
***步:客户端连接服务器
第二步:服务器发送随机字符串challenge给客户端
第三步:客户端发送username+response给服务器
其中response=HEX(SHA1(password) ^ SHA1(challenge + SHA1(SHA1(password))))
第四步:服务器验证response。
服务器存储了SHA1(SHA1(password)))
所以可以计算得到SHA1(challenge + SHA1(SHA1(password))))
那么SHA1(password)=response^ SHA1(challenge + SHA1(SHA1(password))))
***再对SHA1(password)求一次sha1和存储的数据进行比对,一致表示认证成功。
我们分析它的安全性:
当然如果被抓包同时数据库泄密,就可以得到sha1(password),就可以仿冒登陆了。
这种认证方式其实是有一个框架标准的,叫做SASL(Simple Authentication and Security Layer ),专门用于C/S模式下的用户名密码认证。原理就是服务器发送一个挑战字challenge给客户端,客户端返回的response证明自己拥有密码,从而完成认证的过程,整个过程不需要密码明文在网络上传输。
基于SASL协议有很多实现,mysql的就是模仿的CRAM-MD5协议,再比如SCRAM-SHA1协议,是mongdb、PostgreSQL 使用的认证方式。在JDK中专门有一套SASL的API,用于实现不同的SASL认证方式。
当前题目:MySQL是如何做到安全登陆
浏览路径:http://www.mswzjz.cn/qtweb/news13/484463.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能