我正在制作一个使用一些数据连接到数据库的组件,这个数据包括用户ID和密码,它将这些值存储在私有变量中,但是任何程序员都可以在初始化后看到调试器中的值,所以我我想知道SqlConnection如何隐藏该值,当我看到属性ConnectionString的值时,我看到除了密码之外的所有信息,它将它存储在某个地方,但它没有让它可见,即使在调试器中我也看不到任何变量这是存储密码,我知道我可以使用SecureString保护密码,但我想知道如何实现SqlConnection对象。
感谢。
Juan Zamudio
答案 0 :(得分:3)
来自manual:
ConnectionString类似于 OLE DB连接字符串,但不是 相同。与OLE DB或ADO不同, 返回的连接字符串是 与用户设置相同 ConnectionString,减去安全性 如果坚持安全的信息 信息值设置为false(默认值)。 .NET Framework数据提供程序 SQL Server不会保留或返回 连接字符串中的密码 除非您设置持久安全信息 为真。
我不确定这是如何实现的。我的未验证的猜测是它用一个安全参数填充一个结构,然后发送给服务器,除非你将Persist Security Info设置为true,否则永远不会存储它们。