用于在 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 中是不是有用于唯一约束的数据注释(代码优先)?
用于 ASP.NET Core 应用程序的 EF Code First 迁移替代方案