用于在 EF Core 中与数据库通信的安全性

Posted

技术标签:

【中文标题】用于在 EF Core 中与数据库通信的安全性【英文标题】:security used for communication the DB within EF Core 【发布时间】:2021-11-02 14:16:27 【问题描述】:

我需要知道在哪里可以找到有关从 EF Core 应用程序向数据库发送请求时使用的安全性的信息。我正在使用带有 .NET (netcoreapp3.1) 的 Azure 函数。这是我的连接字符串,尽管我需要了解有关通信流量的更多信息,尽管我已经加密了数据,即

Server=tcp:,1433;Initial Catalog=;Persist Security Info=False;User ID=;Password=;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection 超时=30;");

任何帮助都会很棒,干杯!

更新我需要知道是否正在使用 TLS1.2。

【问题讨论】:

【参考方案1】:

连接字符串的重要部分是encrypt=true - 这会强制客户端使用安全、加密的连接。正如您随后发现的那样,数据库服务器负责确定接受哪些协议 - 在 Azure 中,您可以将数据库服务器配置为至少接受 TLS 1.0、1.1 或 1.2,这是在防火墙和虚拟下的服务器级别设置的网络。

documentation states:

加密 为 true 时,如果服务器安装了证书,SQL Server 将对客户端和服务器之间发送的所有数据使用 SSL 加密。公认的值是真、假、是和否。有关详细信息,请参阅连接字符串语法。

从 .NET Framework 4.5 开始,当 TrustServerCertificate 为 false 且 Encrypt 为 true 时,SQL Server SSL 证书中的服务器名称(或 IP 地址)必须与连接字符串中指定的服务器名称(或 IP 地址)完全匹配。否则,连接尝试将失败。

【讨论】:

【参考方案2】:

刚刚在 Azure DB 上看到,您可以选择最小的 tls 版本,因此设置为 1.2,它将拒绝任何不在 1.2 的连接,因此这表明 EF Core 使用 tls 1.2 进行传输,因为它不拒绝。

【讨论】:

以上是关于用于在 EF Core 中与数据库通信的安全性的主要内容,如果未能解决你的问题,请参考以下文章

EF Core 中是不是有用于唯一约束的数据注释(代码优先)?

EF Core:一统SQL和NoSQL数据库

用于 ASP.NET Core 应用程序的 EF Code First 迁移替代方案

EF Core 3.1 在特定数据库上下文上添加迁移

有没有办法将已经打开的 MySQL 连接传递给 EF Core DbContext ?用于多线程目的

在内存中使用 SQLite 运行 EF Core - 未配置数据库提供程序