首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql协议中的身份验证有多安全?

mysql协议中的身份验证有多安全?
EN

Stack Overflow用户
提问于 2012-06-25 23:48:21
回答 2查看 6.4K关注 0票数 10

我的用户正在使用MS Access和ODBC连接器连接到我的远程MySQL数据库。我想知道这有多安全,在可能的密码泄露给第三方的意义上。mysql协议身份验证对于窃听甚至中间人攻击是安全的吗?我对防止窃听的安全性感到非常满意。请注意,我只关心身份验证,并不关心数据泄露。

请不要回复我应该使用SSL。我知道这将是理想的,然而设置似乎并不是很简单。无论如何,我想知道什么是纯mysql协议的安全级别。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-25 23:59:22

什么是你想要的“安全的窃听甚至中间人攻击”?你的密码还是你的数据?

您问题的标题特别提到了身份验证。MySQL在保护您的密码免受窃听者的窃听方面做得很好(它不是明文发送的,并且使用现时值可以防止重放攻击)。引用MySQL protocol internals

MySQL 4.1及更高版本

请记住,mysql.user.Password存储密码(SHA1(SHA1))

使用用户拥有的密码entered.

  • token =

(

  • + SHA1( stage1_hash ))

,服务器向客户端发送一个随机字符串(置乱)到客户端计算:SHA1

  • stage1_hash =SHA1(stage1_hash

加扰异或客户端将令牌发送到服务器异或服务器计算

  • stage1_hash‘=令牌异或(
    • +
    • )SHA1( mysql.user.Password)

mysql.user.Password

  • If和
  • 服务器比较SHA1(stage1_hash'),它们是相同的,密码是正确的。

(注意SHA1(A+B)是A和B的连接的SHA1 )

此协议修复了旧协议的缺陷,线路上的侦听和mysql.user.Password都不足以保证成功的连接。但是当一个人在线路上既有mysql.user.Password又有被截获的数据时,他就有足够的信息来连接。

但是,经过身份验证的会话以明文形式继续:窃听者将能够看到所有查询和结果;而MITM将能够对其进行更改。如the manual中所述

默认情况下,MySQL在客户端和服务器之间使用未加密的连接。这意味着有权访问网络的人可以监视您的所有流量,并查看正在发送或接收的数据。他们甚至可以在数据在客户端和服务器之间传输时更改数据。

虽然您可能不喜欢这个答案,但SSL是设计用来阻止两种数据窃听的工具(否则通信如何加密?)和MITM攻击(否则任何一方如何验证其同级是它认为的那个人?)。实际上,如果mysql客户端-服务器协议单独击败了这些威胁,那么就没有理由在SSL上使用mysql (因此它不太可能是一种受支持的配置)。

票数 16
EN

Stack Overflow用户

发布于 2013-06-30 16:43:01

简而言之:是的,该协议是安全的,不会受到窃听和MITM攻击。

只有当攻击者设法嗅探到身份验证尝试并且知道mysql.user的内容时,他才能随后针对服务器进行身份验证。例如,如果您在两台不同的mysql服务器上使用相同的密码,而攻击者获得了其中一台服务器的访问权限,那么他也可以连接到第二台服务器。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11192689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档