保护具有用户名和密码的字符串

时间:2010-12-22 15:53:35

标签: c# asp.net-mvc

我正在实施一个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.
         */

当然我同意,那么如何保护这些并且不在生产代码中加入纯文本?我将它们存储在数据库中吗?但是我如何加密/解密它们? 感谢

5 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

twal,

您可以查看此页面,该页面使用web.config中的连接字符串作为示例提供简单的见解。它专注于 RSAProtectedConfigurationProvider DataProtectionConfigurationProvider ,两者都非常安全。

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

应该适用于您想要做的事情。

答案 4 :(得分:0)

从ASP.NET 2.0开始,我使用encrypted配置部分完成了此操作。它很好,因为你的代码只是以相同的方式使用Configuration,无论它是否加密,ASP.NET都会在运行时解密它。