如何在C# 2.0中使用Web.config加密用户名和密码

15

我在Web.config中有以下条目,我正在使用.NET 2.0和C#进行编码。

 <add key="userName" value="s752549"/>
 <add key="userPassword" value="Delhi@007"/>

现在我希望将这个内容加密,以便没有人可以看到,而且这些密码可能会频繁更改(每十五天一次)。


1
可能是Encrypting Web.Config的重复问题。 - usr-local-ΕΨΗΕΛΩΝ
同样的问题也可以在https://dev59.com/R3VD5IYBdhLWcg3wNIvc找到。 - usr-local-ΕΨΗΕΛΩΝ
可能是Encrypting appSettings in web.config的重复问题。 - Luke Girvin
4个回答

14

我想补充一点,标记的答案已经完成了99%,但没有提供如何指定web config的位置。不想在互联网上四处寻找,所以我想直接发布完整的命令。因此,这是我执行的命令:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis -pef "secureAppSettings" "C:\MyLocalPublishDirectory\MyApp" -prov DataProtectionConfigurationProvider

13

你可以将用户名和密码放在一个单独的部分中,并仅加密该部分。例如:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="secureAppSettings" type="System.Configuration.NameValueSectionHandler, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    </configSections>

    <appSettings>
        <add key="Host" value="www.foo.com" />
        <add key="Token" value="qwerqwre" />
        <add key="AccountId" value="123" />
        <add key="DepartmentId" value="456" />
        <add key="SessionEmail" value="foo@foo.com" />
        <add key="DefaultFolder" value="789" />  
    </appSettings>

    <secureAppSettings>
        <add key="userName" value="s752549"/>
        <add key="userPassword" value="Delhi@007"/>

    </secureAppSettings>  
</configuration>

然后使用aspnet_regiis命令

For Ex: 
aspnet_regiis -pef secureAppSettings . -prov DataProtectionConfigurationProvider

如何在 aspnet_regiis 中指定 webconfig 的路径 - Manoj Singh
还有,您能告诉我如何在我们的 .net 代码中获取加密值吗? - Manoj Singh
查看此链接以获取更多详细信息:http://diablopup.blogspot.com/2007/04/aspnetregiis-encryptdecrypt-webconfig.html获取类似以下的值: string userName = ConfigurationSettings.AppSettings["userName"]; - Saurabh
顺便提一下,您可以选择加密整个“appSettings”。 您不需要特别的单独区域,这样可以使您的代码简单。 这就是我的项目目前进行加密的方式(我们还加密连接字符串)。 - raider33

3

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接