Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何保护连接字符串中的用户名和密码?_C#_Database_Ado.net_Sqlconnection - Fatal编程技术网

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

C# 如何保护连接字符串中的用户名和密码?,c#,database,ado.net,sqlconnection,C#,Database,Ado.net,Sqlconnection,开发windows应用程序时: 如何保护连接字符串中的用户名和密码 像银行这样的组织,他们会向应用程序开发人员提供数据库的用户名和密码吗?如果不是,那么这些应用程序开发人员通常是如何编写数据库连接的 保护连接字符串中的用户和密码的行业标准是什么 感谢来自MSDN的: ASP.NET 2.0引入了一种称为“受保护的配置”的新功能,使您能够加密配置文件中的敏感信息。虽然主要为ASP.NET设计,但受保护的配置也可用于加密Windows应用程序中的配置文件节。有关受保护配置功能的详细说明,请参阅 以下

开发windows应用程序时:

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

  • 像银行这样的组织,他们会向应用程序开发人员提供数据库的用户名和密码吗?如果不是,那么这些应用程序开发人员通常是如何编写数据库连接的

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

  • 感谢来自MSDN的

    ASP.NET 2.0引入了一种称为“受保护的配置”的新功能,使您能够加密配置文件中的敏感信息。虽然主要为ASP.NET设计,但受保护的配置也可用于加密Windows应用程序中的配置文件节。有关受保护配置功能的详细说明,请参阅

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

     <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。。。
    
  • 如何保护连接字符串中的用户名和密码
  • 使用Windows身份验证来消除连接字符串中对密码的需要,或者使用以下一种或多种方法的组合:

    • 加密,例如使用

    • 限制对配置文件的访问,例如使用ACL

    请注意,上述技术适用于服务器应用程序(例如ASP.NET),在这些应用程序中,对服务器的访问权限可以限制为授权管理员。对于直接访问数据库的客户端应用程序来说,它不能很好地工作

    还要注意,仅仅靠加密本身是不够的:它只是用控制对加密密钥的访问来代替控制对明文配置文件的访问的问题。使用受保护的配置时,需要决定如何限制对用于加密配置文件的加密密钥的访问

    二,。 像银行这样的组织,他们会向应用程序开发人员提供数据库的用户名和密码吗?如果不是,那么这些应用程序开发人员通常是如何编写数据库连接的

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

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


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

    目前,只有链接答案不受欢迎。尝试添加一些细节否,但我认为您可以构建一个总结文章的答案,然后包含链接。这将增加价值。链接不会增加价值。在评论上浪费时间。。。答案是最好从MSDN复制信息。这不是关于保护连接字符串数据的问题。我认为OP正在寻找如何加密用户并传递连接到数据库,不选择用户并从数据库传递。在您提到的关于测试环境的第二个答案中,我相信您的意思是,这是一组与原始?@sniff_位平行的虚拟数据-开发/测试数据库中的数据取决于组织。如果生产数据是机密的,则可能是虚拟数据,也可能是生产数据的匿名版本。如果不是机密,它可能只是生产数据的快照。@Joe:我想将我的应用部署给最终用户。如何保护用于连接到集中式SQL server的用户名/密码?正如您所写的“它对直接访问数据库的客户端应用程序不起作用。”@YukiSakura——“它不起作用”,因为如果用户有足够的决心,他将能够访问数据库。为了缓解这种情况,您可以限制允许数据库登录的操作(例如,仅执行应用程序所需的存储过程)。但它永远不会像在客户端和数据库之间使用web服务的体系结构那样安全,因为客户端不能直接访问数据库。