持久安全信息Property = true且Persist Security Info Property = false

Nou*_*rah 28 c# database ms-access connection-string database-connection

对于属性:

Persist Security Info=true
Run Code Online (Sandbox Code Playgroud)

Persist Security Info=false
Run Code Online (Sandbox Code Playgroud)

你能告诉我他们之间的区别是什么,如果我不把它放在我的连接中会发生什么?

connect.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;
                            Data Source=C:/Users/Nourah/Downloads 
                            /Phase3/Salary.accdb; 
                            Persist Security Info=False;";
Run Code Online (Sandbox Code Playgroud)

Sac*_*chu 41

即使你设置Persist Security Info= trueOR Persist Security Info=false 也不会在前面显示出差异.差异发生在背景

Persist Security Info set to false安全敏感信息,如密码,不作为连接的一部分返回,如果连接是打开的或者一直处于打开状态.

如果设置Persist Security Info to True,Windows将记住连接字​​符串中指定的密码.

多数民众赞成.

MSDN解释

Persist Security Info只有在连接字符串中提及用户名和密码时,设置true或false才会生效.如果您在connectionstring中提及用户名和密码并设置Persist Security Infofalse则无法提取凭据.但如果你设置Persist Security Info为true而在连接字符串窗口中提供凭据将记住凭据,它可以在程序中提取

  • "然后凭证无法提取.."通过什么,源代码?什么是专业和骗局以及何时需要将此设置为真的简单场景? (7认同)
  • @eaglei22,.net 实体框架的 DbContext 的用户可能希望提取连接字符串,以便创建用于较低级别操作(例如 SqlBulkCopy)的附加连接。 (2认同)
  • @Chris 正是这个。您想要从 EF DbContext 获取连接字符串以用于某些非 EF DB 操作(例如 SqlBulkCopy),或者您想要从原始 SQL 查询获取数据而不创建 POCO 来将其读入(据我所知 EF Core 不这样做)不允许在“对象”中执行原始 SQL)。我想知道使用 Persist Security Info = True 是否会带来安全风险,以及通过选项模式提供连接字符串是否会更安全。我不知道会怎样,但我不是 100% 确定。 (2认同)

Gre*_*Gum 5

我从SQL Server MVP Dan Guzman 在这里找到了这个答案:

我建议您指定FALSE或完全省略关键字,因为它是默认值,即使在开发过程中也是如此。唯一需要指定TRUE的情况是应用程序使用SQL身份验证并随后从连接对象中检索密码,以我的经验,这很少完成或不需要。性能不是问题。