作家
登录

MySQL是如何做到安全登陆

作者: 来源: 2017-11-14 09:56:42 阅读 我要评论

Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践

MySQL是若何做到安然上岸

起首Mysql的暗码权限存储在mysql.user表中。我们不存眷鉴权的部分,我们只关怀身份认证,辨认身份,后面的权限控制是很简单的工作。

你可以用下面的语句,验证和mysql.user表中存储的是一致的。

select sha1(UNHEX(sha1(‘password’)))

以上就是办事端关于暗码的存储,接下来是认证过程。


Mysql采取的是一种challenge/response(挑衅-应答)的认证模式。

第一步:客户端连接办事器

第二步:办事器发送随机字符串challenge给客户端

第三步:客户端发送username+response给办事器

个中response=HEX(SHA1(password) ^ SHA1(challenge + SHA1(SHA1(password))))

我们分析它的安然性:

  1. 抓包可以获得response,然则每次认证办事器都邑生成challenge,所以经由过程抓包无法构造上岸信息。
  2. 数据库内容被窃视,数据库记录的是sha1(sha1(password)),弗成以获得sha1(password)和明文暗码,所以无法构造response,同样无法上岸。

在mysql.user表中有个authentication_string字段,存储的是暗码的两次sha1值。

第四步:办事器验证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认证方法。

【编辑推荐】

  1. 一个弗成思议的MySQL慢查分析与解决
  2. MongoDB即将宣布文档数据库3.6版,新功能抢先看!
  3. 25.6万笔/秒的交易还节俭2000台办事器,数据库OceanBase是怎么做到的?
  4. 分布式MySQL数据库中心件MySQLDA深刻介绍
  5. 应用MySQL全备份,若何只恢复一个库或者一个表?
【义务编辑:庞桂玉 TEL:(010)68476606】

  推荐阅读

  Linux 4.14长久版内核发布:支持4000TB内存、AMD内存加密

Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践Linus Torvalds宣布,Linux Kernel 4.14版体系内核已经正式宣布,并且这是个LTS经久支撑版本,更合实用于各类Linux发行>>>详细阅读


本文标题:MySQL是如何做到安全登陆

地址:http://www.17bianji.com/lsqh/38828.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)