今天我被问到了这个问题,我真的不知道答案。 如果你使用连接string而不使用sspi连接到服务器,那么第三方可以通过任何方式拦截用于login的密码?
"Data Source=MyServer;Initial Catalog=MyDatabase;User Id=sa;Password=CanThisBeSniffed;"
我并不是要求MiTM攻击只是在同一台计算机上,或者在networking上的同一个集线器上使用wireshark或类似的方式运行。
我自己解雇了Wireshark,并没有以纯文本的方式看到它,但它可能是一个简单的混淆或适当的encryption,我只是想知道哪一个。
SQL Server 2000及更高版本(可能是2005年及以后,我忘记了;它在我的新书某处)SQL身份validationlogin(而不是Windows身份validation)所使用的身份validation过程由自签名SSL证书encryption安装数据库引擎的SQL Server实例。
尼克提出了一个很好的观点,因为这篇博文并不完全是你以前的样子。 对于那个很抱歉。
MSDN库具有关于configurationSSL连接的详细信息http://msdn.microsoft.com/zh-cn/library/ms189067.aspx
但是,以下略有含糊
Credentials (in the login packet) that are transmitted when a client application connects to SQL Server are always encrypted.
不pipe怎么说,这还不是完全清楚,如果这意味着它们总是被encryption而不pipeSSL设置如何,或者不是。
如果您担心,我会启用SSL。
我也一直在挖掘这一点,而且有可能是MITM的攻击来强制降级 – 请看这里
某些旧版本的SQL不支持SSLencryptionlogin,并以明文方式发送密码,因此如果encryption的身份validation失败,则客户端和服务器支持都会回退到未encryption的身份validation。 但是您不能将现代版本的SQL Server设置为ENCRYPT_NOT_SUP(注意攻击是MITM PRELOGIN会话并将标志更改为ENCRYPT_NOT_SUP而不是ENCRYPT_OFF–这是SQL的默认模式)。