c# - 在 .Net 4 中保留安全信息

标签 c# .net-4.0 connection-string

您使用 Microsoft Visual Studio 2010 和 Microsoft .NET Framework 4 创建应用程序。该应用程序连接到 Microsoft SQL Server 2008 数据库。 该应用程序使用 Microsoft ADO.NET SQL Server 托管提供程序。当连接失败时,该应用程序会记录连接信息,包括完整的连接字符串。该信息以纯文本形式存储在 .config 文件中。

您需要确保数据库凭据是安全的。

您应该将哪个连接字符串添加到 .config 文件中?

A.Data Source=myServerAddress;初始目录=myDataBase;集成安全性=SSPI;持久化安全信息=false;

B.Data Source=myServerAddress;初始目录=myDataBase;集成安全性=SSPI;坚持安全信息=真;

C.Data Source=myServerAddress;初始目录=myDataBase;用户 ID = 我的用户名;密码 = 我的密码;持久化安全信息=false;

D.Data Source=myServerAddress;初始目录=myDataBase;用户 ID = 我的用户名;密码 = 我的密码;坚持安全信息=真;

根据指南,答案是“A”。但在我看来,答案是“C”。如果我们使用 Integrated Security = SSPI,则不需要提供用户 ID 和密码。因此,Persist Security Info=false 无效。

据我所知,Persist Security Info 只有在连接字符串有 User Credentials 时才会生效。

你能告诉我哪一个是正确的吗?谢谢。

最佳答案

你是对的。 Persist Security Info=false 只有在连接字符串中提供了用户名和密码时才有效。但问题是“你应该在 .config 文件中存储什么”,考虑到“信息以纯文本形式存储”,你不应该在配置文件中存储 UID 和 PWD。 如果存储 C,则可以从 .config 文件中提取 PWD 和 UID。但是,如果您存储 A,则没有可提取的凭据。

我不确定,为什么 A 有 "Persist Security Info=false",但看起来这是一个很好的做法。 请参阅 MSDN 示例:

关于c# - 在 .Net 4 中保留安全信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13306638/

相关文章:

c# - 将文件从服务器复制到另一个

c# - 在客户端和服务器之间保护用户名/密码的最佳实践

c# - 无法将运行时连接字符串转换为其设计时等效的 Visual Studio 2012

C# dotnet web 应用程序 : Dll's xml config file is lost when Publishing

c# - migratordotnet - 从应用程序内运行迁移(w/o nant 或 build)

c# - 在 IEnumerable<T> 中选择偶数/奇数元素?

WCF 4 : Fileless Activation Fails On XP (IIS 5) that has SSL port enabled

sql-server - 在 Windows 8 上使用 Windows 身份验证到 SQL Server 2012 的经典 Asp 连接字符串

sqlalchemy - 如何从 SQLAlchemy 引擎实例获取连接 URL?

sql-server - 无法打开登录请求的数据库 "DigitSite.mdf"。登录失败。用户 'Lenaire-PC\Lenaire' 登录失败