C# 如何保护连接字符串中的用户名和密码?
开发windows应用程序时:C# 如何保护连接字符串中的用户名和密码?,c#,database,ado.net,sqlconnection,C#,Database,Ado.net,Sqlconnection,开发windows应用程序时: 如何保护连接字符串中的用户名和密码 像银行这样的组织,他们会向应用程序开发人员提供数据库的用户名和密码吗?如果不是,那么这些应用程序开发人员通常是如何编写数据库连接的 保护连接字符串中的用户和密码的行业标准是什么 感谢来自MSDN的: ASP.NET 2.0引入了一种称为“受保护的配置”的新功能,使您能够加密配置文件中的敏感信息。虽然主要为ASP.NET设计,但受保护的配置也可用于加密Windows应用程序中的配置文件节。有关受保护配置功能的详细说明,请参阅 以下
<connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">
<EncryptedData>
<CipherData>
<CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAH2... </CipherValue>
</CipherData>
</EncryptedData>
</connectionStrings>
AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAH2。。。
当在运行时检索加密的连接字符串时,.NET Framework使用指定的提供程序对密码值进行解密并使其可供应用程序使用。您不需要编写任何其他代码来管理解密过程。
请阅读以下有关MSDN的文章以了解更多信息:
您应该使用参数 范例 SqlCommand=newsqlcommand(“从登录名中选择*,其中Username=@name”,conn); Add(新的SqlParameter(“@name”,uname.txt)); .您可以使用与web.config相同的方式在app.config中。MS称之为受保护配置。 像这样
<connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">
<EncryptedData>
<CipherData>
<CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAH2... </CipherValue>
</CipherData>
</EncryptedData>
</connectionStrings>
AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAH2。。。
- 加密,例如使用
- 限制对配置文件的访问,例如使用ACL
没有“行业标准”,但请参见问题1的答案。目前,只有链接答案不受欢迎。尝试添加一些细节否,但我认为您可以构建一个总结文章的答案,然后包含链接。这将增加价值。链接不会增加价值。在评论上浪费时间。。。答案是最好从MSDN复制信息。这不是关于保护连接字符串数据的问题。我认为OP正在寻找如何加密用户并传递连接到数据库,不选择用户并从数据库传递。在您提到的关于测试环境的第二个答案中,我相信您的意思是,这是一组与原始?@sniff_位平行的虚拟数据-开发/测试数据库中的数据取决于组织。如果生产数据是机密的,则可能是虚拟数据,也可能是生产数据的匿名版本。如果不是机密,它可能只是生产数据的快照。@Joe:我想将我的应用部署给最终用户。如何保护用于连接到集中式SQL server的用户名/密码?正如您所写的“它对直接访问数据库的客户端应用程序不起作用。”@YukiSakura——“它不起作用”,因为如果用户有足够的决心,他将能够访问数据库。为了缓解这种情况,您可以限制允许数据库登录的操作(例如,仅执行应用程序所需的存储过程)。但它永远不会像在客户端和数据库之间使用web服务的体系结构那样安全,因为客户端不能直接访问数据库。