连接字符串中的用户名和密码的安全性如何?

时间:2014-01-24 07:40:25

标签: c# database ado.net sqlconnection

开发Windows应用程序时:

  1. 如何保护连接字符串中的用户名和密码?

  2. 银行等组织是否会向应用程序开发人员提供其数据库的用户名和密码?如果不是典型的那些应用程序开发人员如何编写数据库连接?

  3. 在连接字符串中保护用户和密码的行业标准是什么?

  4. 感谢

4 个答案:

答案 0 :(得分:3)

  
      
  1. 如何保护连接字符串中的用户名和密码?
  2.   

使用Windows身份验证来消除连接字符串中密码的需要,或者使用以下一个或多个的组合:

请注意,上述技术适用于服务器应用程序(例如ASP.NET),其中服务器的访问权限仅限于授权管理员。它不适用于直接访问数据库的客户端应用程序。

另请注意,加密本身是不够的:它只是通过控制对加密密钥的访问权限的问题来取代控制对纯文本配置文件的访问的问题。使用受保护的配置时,您需要决定如何限制对用于加密配置文件的加密密钥的访问。

  

2。   银行等组织是否会向应用程序开发人员提供其数据库的用户名和密码?如果不是典型的那些应用程序开发人员如何编写数据库连接?

通常,开发人员只能获得在开发/测试环境中访问数据库的凭据。对生产数据库的访问将受到限制。

  

3。   在连接字符串中保护用户和密码的行业标准是什么?

没有“行业标准”,但请参阅问题1的答案。

答案 1 :(得分:1)

您可以使用与web.config相同的方式在app.config中encrypt sections。 MS将其称为受保护配置。 喜欢这个

<connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">
  <EncryptedData>
    <CipherData>
      <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAH2... </CipherValue>
    </CipherData>
  </EncryptedData>
</connectionStrings>

答案 2 :(得分:0)

来自MSDN:

ASP.NET 2.0引入了一项名为protected configuration的新功能,使您可以加密配置文件中的敏感信息。虽然主要是为ASP.NET设计的,但受保护的配置也可用于加密Windows应用程序中的配置文件部分。有关受保护配置功能的详细说明,请参阅Encrypting Configuration Information Using Protected Configuration

以下配置文件片段显示加密后的connectionStrings部分。 configProtectionProvider指定用于加密和解密连接字符串的受保护配置提供程序。 EncryptedData部分包含密文。

 <connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">
  <EncryptedData>
    <CipherData>
      <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAH2... </CipherValue>
    </CipherData>
  </EncryptedData>
</connectionStrings>

在运行时检索加密的连接字符串时,.NET Framework使用指定的提供程序解密CipherValue并使其可供您的应用程序使用。您无需编写任何其他代码来管理解密过程。 有关更多信息,请阅读MSDN上的以下文章:

Connection Strings and Configuration Files

答案 3 :(得分:-2)

您应该使用参数。

示例 SqlCommand command = new SqlCommand(“select * from Login where Username = @name”,conn); command.Parameters.Add(new SqlParameter(“@ name”,uname.txt));