我的用户正在使用MS Access和ODBC连接器连接到我的远程MySQL数据库。我想知道这有多安全,在可能的密码泄露给第三方的意义上。mysql协议身份验证对于窃听甚至中间人攻击是安全的吗?我对防止窃听的安全性感到非常满意。请注意,我只关心身份验证,并不关心数据泄露。
请不要回复我应该使用SSL。我知道这将是理想的,然而设置似乎并不是很简单。无论如何,我想知道什么是纯mysql协议的安全级别。
发布于 2012-06-25 23:59:22
什么是你想要的“安全的窃听甚至中间人攻击”?你的密码还是你的数据?
您问题的标题特别提到了身份验证。MySQL在保护您的密码免受窃听者的窃听方面做得很好(它不是明文发送的,并且使用现时值可以防止重放攻击)。引用MySQL protocol internals
MySQL 4.1及更高版本
请记住,mysql.user.Password存储密码(SHA1(SHA1))
使用用户拥有的密码entered.
(
,服务器向客户端发送一个随机字符串(置乱)到客户端计算:SHA1
加扰异或客户端将令牌发送到服务器异或服务器计算
mysql.user.Password
(注意SHA1(A+B)是A和B的连接的SHA1 )
此协议修复了旧协议的缺陷,线路上的侦听和mysql.user.Password都不足以保证成功的连接。但是当一个人在线路上既有mysql.user.Password又有被截获的数据时,他就有足够的信息来连接。
但是,经过身份验证的会话以明文形式继续:窃听者将能够看到所有查询和结果;而MITM将能够对其进行更改。如the manual中所述
默认情况下,MySQL在客户端和服务器之间使用未加密的连接。这意味着有权访问网络的人可以监视您的所有流量,并查看正在发送或接收的数据。他们甚至可以在数据在客户端和服务器之间传输时更改数据。
虽然您可能不喜欢这个答案,但SSL是设计用来阻止两种数据窃听的工具(否则通信如何加密?)和MITM攻击(否则任何一方如何验证其同级是它认为的那个人?)。实际上,如果mysql客户端-服务器协议单独击败了这些威胁,那么就没有理由在SSL上使用mysql (因此它不太可能是一种受支持的配置)。
发布于 2013-06-30 16:43:01
简而言之:是的,该协议是安全的,不会受到窃听和MITM攻击。
只有当攻击者设法嗅探到身份验证尝试并且知道mysql.user的内容时,他才能随后针对服务器进行身份验证。例如,如果您在两台不同的mysql服务器上使用相同的密码,而攻击者获得了其中一台服务器的访问权限,那么他也可以连接到第二台服务器。
https://stackoverflow.com/questions/11192689
复制相似问题