加密密码并将其存储在 web.config 文件中

Encrypt and store password in web.config file

提问人:vml19 提问时间:9/9/2011 最后编辑:vml19 更新时间:10/3/2011 访问量:8346

问:

我的 web.config 文件中有以下信息。

<appSettings>
<add key="AdminUsername" value="User1"/>
<add key="AdminPassword" value="Password1"/>
</appSettings>

如何加密和存储? 如何解密和使用?

C# asp.net web-config-encryption

评论

0赞 vml19 10/3/2011
同样的答案在这里。stackoverflow.com/questions/6291322/......

答:

2赞 Wilson Tan 9/9/2011 #1

请参阅文章 - http://msdn.microsoft.com/en-us/library/k6h9cz8h%28v=vs.80%29.aspx

命令为:

aspnet_regiis.exe -pe “appSettings” -site “MySharePoint” -app “/”

其中 MySharePoint 是虚拟目录。web.config 文件也应该在目录中。

评论

0赞 vml19 9/9/2011
我只需要加密 appconfig 部分的一部分,而不是整个。<add key=“AdminUsername” value=“User1”/> <add key=“AdminPassword” value=“Password1”/>
0赞 Wilson Tan 9/9/2011
更新答案 - 现在它将仅加密 appSettings 部分。希望它有所帮助。
1赞 Joe 9/9/2011 #2

使用 aspnet_regiis 或等效 API 加密配置节的缺点是它会加密整个节。

从安全角度来看很好,但它使管理员更难检查同一部分中的其他非敏感配置数据。appSettings 是管理员经常要检查的部分。

一种选择是将凭据放在不同的部分(例如,在该部分中创建虚拟连接字符串)并仅加密此部分:<connectionStrings>

<connectionStrings>
   ...
   <add key="AdminCredentials" 
        providerName="" 
        connectionString="Username=...;Password=..." />
</connectionStrings>

当然,您必须编写代码来分析虚拟连接字符串 (String.Split) 并提取凭据。类似于以下内容(为简单起见,省略错误处理):

string s = ConfigurationManager.ConnectionStrings["AdminCredentials"].ConnectionString;
string[] tokens = s.Split(';');
string userName = tokens[0].Split('=')[1];
string password = tokens[1].Split('=')[1];
...

通过执行此操作,可以使 appSettings 部分保持未加密状态。

评论

0赞 vml19 9/20/2011
您能详细说明一下加密虚拟部分吗?
0赞 Joe 9/21/2011
@Nilaa,我的建议是一个虚拟的 connectionString,而不是一个虚拟部分。请参阅示例代码 - 一个连接字符串,其中包含 providerName 的空字符串,以及 connectionString 本身中的用户名和密码。然后,编写代码以分析虚拟连接字符串中的用户名和密码。