您使用 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/