【问题标题】:Securing strings that have usernames and passwords保护具有用户名和密码的字符串
【发布时间】:2010-12-23 00:30:22
【问题描述】:

我正在实现一个 API。我需要提供 API 将连接到的帐户的用户名和密码。

        profile.APIUsername = "myusername";
        profile.APIPassword = "mypassword";

API 文档中有这个警告。

/*
         WARNING: Do not embed plaintext credentials in your application code.
         Doing so is insecure and against best practices.
         Your API credentials must be handled securely. Please consider
         encrypting them for use in any production environment, and ensure
         that only authorized individuals may view or modify them.
         */

我当然同意,那么我怎样才能保护这些而不是在生产代码中放入纯文本?我是否将它们存储在数据库中?但我如何加密/解密它们? 谢谢

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

    您可以将用户名和密码存储在 Web.config 文件中,然后在 Web.config 中加密这些设置。

    这是加密它们的简单方法:http://odetocode.com/blogs/scott/archive/2006/01/08/encrypting-custom-configuration-sections.aspx

    【讨论】:

    • 如果在同一个解决方案中,一个单独的 Dll 中的类可以访问 web.config 文件吗?这个类与我的 web 层位于不同的层
    • @twal 是的,您可以通过单独的 DLL 中的 ConfigurationManager 类访问配置文件。
    【解决方案2】:
    【解决方案3】:

    我认为 mkchandler 和 Conrad Frix 提供的解决方案是您最好的选择,因为它们既安全又得到框架的完全支持。请记住,当您可以控制 Web 服务器并且可以运行该工具以直接在 web.config 将驻留在生产环境中的计算机上加密配置文件时,这些选项将非常有用。如果您拥有服务器(而不是使用托管服务提供商),这通常不是问题。另外请记住,如果您有一个网络农场,您将需要加密每台机器上的值,因为这些解决方案使用机器特定的密钥加密值。

    如果您无法控制 Web 服务器,那么您可能希望使用自己的程序加密这些值,将它们加密存储在您的 web.config 中并在运行时解密它们。这不太理想,但如果您无法控制 Web 服务器,它会起作用。 .NET 中有很多类可以加密值,如果您决定走这条路,应该会对您有所帮助(无耻的插件 - here is an example 关于如何使用 .NET 类加密/解密字符串)。

    【讨论】:

      【解决方案4】:

      twal,

      您可以查看此页面,该页面使用 web.config 中的连接字符串作为示例提供了简单的见解。它主要针对 RSAProtectedConfigurationProviderDataProtectionConfigurationProvider,两者都非常安全。

      http://www.beansoftware.com/ASP.NET-Tutorials/Encrypting-Connection-String.aspx

      应该适用于你想做的事情。

      【讨论】:

        【解决方案5】:

        从 ASP.NET 2.0 开始,我使用 encrypted 配置部分进行了此操作。这很好,因为无论是否加密,您的代码都以相同的方式使用配置,并且 ASP.NET 负责在运行时对其进行解密。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-21
          • 1970-01-01
          • 2011-04-15
          • 2011-06-20
          • 2016-10-03
          相关资源
          最近更新 更多