新闻动态

连接服务器:MySQL是如何做到安全登陆

发布日期:2022-09-09 08:06 | 文章来源:IDC圈

连接服务器

首先Mysql的密码权限存储在mysql.user表中。我们不关注鉴权的部分,我们只关心身份认证,识别身份,后面的权限控制是很简单的事情。

在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和存储的数据进行比对,一致表示认证成功。

我们分析它的安全性:

抓包可以得到response,但是每次认证服务器都会生成challenge,所以通过抓包无法构造登陆信息。

数据库内容被偷窥,数据库记录的是sha1(sha1(password)),不可以得到sha1(password)和明文密码,所以无法构造response,同样无法登陆。

当然如果被抓包同时数据库泄密,就可以得到sha1(password),就可以仿冒登陆了。

这种认证方式其实是有一个框架标准的,叫做SASL(Simple Authentication and Security Layer ),专门用于C/S模式下的用户名密码认证。原理就是服务器发送一个挑战字challenge给客户端,客户端返回的response证明自己拥有密码,从而完成认证的过程,整个过程不需要密码明文在网络上传输。

基于SASL协议有很多实现,mysql的就是模仿的CRAM-MD5协议,再比如SCRAM-SHA1协议,是mongdb、PostgreSQL 使用的认证方式。在JDK中专门有一套SASL的API,用于实现不同的SASL认证方式。

  YINGSOO物理服务器均位于当地的知名数据中心机房,并与当地知名电信运营商直接合作,不通过任何中间商,为广大客户提供了稳定快速的网络访问。例如YINGSOO在韩国部署的服务器节点,其位置位于韩国首尔的KT(Korea Telecom)数据中心,是韩国最早的机房之一,也是世界顶级网络机房。YINGSOO热线:400-630-3752

  想要挑选好的海外云服务器,就得挑选好的海外云服务器提供商。YINGSOO是一家专注海外主机业务的IDC服务商,10年经验,专业团队,品质有保障,服务更贴心!服务热线:400-630-3752

  热门文章:【云主机租用】【mysql】【流量攻击】【流媒体服务】【香港服务器】【服务器资源】【小程序云服务器多少钱】【香港服务器租用】【MongoDB数据库】【电商服务器】【香港云服务器】【服务器资源】【美国云服务器】【云计算服务器】【Debian11】【站群高防大带宽】【美国高防】【zabbix邮件报警配置】【香港高防】【主机租用】【网站服务器】【服务器租用托管】【大带宽】【应用服务器】【云数据库】【docker安装zabbix】【显卡排行榜】【海外服务器】【服务器哪个好】【Python常用数据类型

版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。

实时开通

自选配置、实时开通

免备案

全球线路精选!

全天候客户服务

7x24全年不间断在线

专属顾问服务

1对1客户咨询顾问

在线
客服

在线客服:7*24小时在线

客服
热线

400-630-3752
7*24小时客服服务热线

关注
微信

关注官方微信
顶部