当前位置: 首页 > 知识库问答 >
问题:

检查MySqlConnection是否使用SSL

盛柏
2023-03-14

我认为我的问题类似于C#:如何检查MySqlConnection是否使用SSL?,但不幸的是,它没有好的答案,因为可能不清楚。所以我的看法是:

我创建了一个新连接:

var connection = new MySqlConnection("Data Source=example.com;Port=3306;Database=Foo;User Id=root;Password=foo;SSL Mode=Required");

如何验证它使用SSL,是否有类似连接的东西。IsOverSSL

编辑:

我尝试使用类似“Ssl\u cipher”的显示会话状态,但这给了我Ssl\u cipher,即使Ssl模式=必需:

我使用的代码是:

var connection = new MySqlConnection(ConfigurationManager.AppSettings["Test"]);
connection.Open();
var command = new MySqlCommand("SHOW SESSION STATUS LIKE \'Ssl_cipher\'", connection);
MySqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
    Console.WriteLine(reader.GetString(0));
}

根据https://dev.mysql.com/doc/refman/5.7/en/using-encrypted-connections.html,它应该给我提供Ssl\U密码| DHE-RSA-AES128-GCM-SHA256

共有2个答案

詹唯
2023-03-14

您可以查看单词“SSL”的连接字符串。这将使您知道您的IDbConnection在这种情况下是否使用ssl。有关可用于MySql的连接字符串列表,请访问ConnectionStrings.com.如果这解决了您的问题,请告诉我。

我会尝试查看连接字符串。这里有一个解决方案来证明这一点。

var connStr = "Data Source=example.com;Port=3306;Database=Foo;User Id=root;Password=foo;SSL Mode=Required";
var sslElement = connStr.Split(';')
    .SingleOrDefault(s => s.StartsWith("SSL", StringComparison.InvariantCultureIgnoreCase));

var sslModeEnabled = (sslElement != null 
    && string.Equals(sslElement.Split('=')[1].Trim(), "None", StringComparison.InvariantCultureIgnoreCase) == false);


Console.WriteLine($"SSL Mode Enabled: {sslModeEnabled}");
阎坚成
2023-03-14

原来我没有打印查询的第二列,现在可以了:

var connection = new MySqlConnection(ConfigurationManager.AppSettings["Test"]);
connection.Open();
var command = new MySqlCommand("SHOW SESSION STATUS LIKE \'Ssl_cipher\'", connection);
MySqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
    Console.WriteLine($"{reader.GetString(0)}: {reader.GetString(1)}");
}

它打印Ssl_cipher: AES256-SHA用于SSL Mode=必需,和Ssl_cipher:用于SSL Mode=无。另一方面,我得到Ssl_cipher: AES256-SHA,即使SSL Mode完全丢失,所以它可能默认为打开。

 类似资料:
  • 一个类似于Iterator中的的方法,在异常抛出和布尔返回行为中(尽管没有与的约定)。 示例: 目标是在客户端代码调用此方法而不消耗流的情况下早期失败。 一个可接受的答案也可以是“没有解决方案存在”,并有充分的理由说明为什么规范不能添加这样的方法(如果有充分的理由的话)。看起来JDK流通常在其终端方法的开头有以下代码段: 因此,对于这些流,实现这样的方法似乎并不困难。

  • 问题内容: 我正在使用SQL Server,但没有足够的数据集来测试查询的性能。 我想分析查询,看看索引是否被利用。我该如何检查 问题答案: 在SQL Management Studio中,只需键入查询,然后按Control-L(显示查询执行计划)。在那里,您将能够查看是否正在使用任何索引。“表扫描”表示未使用索引。“索引扫描”是指使用索引。

  • 问题内容: 如何使用Python和pywin32或wxPython以最简单的方式区分Windows XP和Windows Vista ? 本质上,如果当前操作系统是Vista,我需要一个将返回True的函数: 问题答案: Python具有可爱的“平台”模块来帮助您。 注意:如注释中所述,使用旧版本的python时可能不会返回正确的值。

  • 问题内容: 我正在尝试检查Jquery库是否已加载到HTML页面上。我正在检查它是否有效,但是有些不正确。这是我所拥有的: 问题答案: 事情不对 好吧,您正在使用jQuery检查jQuery是否存在。如果未加载jQuery,则根本不会运行,并且回调也不会执行,除非您正在使用另一个库,并且该库碰巧共享相同的语法。 删除您的(使用类似方法):

  • 我需要从mysql检查行是否为空并执行操作,但我找不到我做错了什么。有人能帮忙吗? 我的表: 下面是我的代码:

  • 问题内容: 我正在一个需要JavaScript和会话的页面上工作。我已经有代码来警告用户是否禁用了javascript。现在,我想处理禁用cookie的情况,因为会话ID存储在cookie中。 我只想到了几个主意: 将会话ID嵌入链接和表单中 警告用户如果禁用了cookie,则必须启用cookie(需要帮助来检测cookie是否被禁用) 解决此问题的最佳方法是什么?谢谢 编辑 根据链接的文章,我想