提问人:vml19 提问时间:9/9/2011 最后编辑:vml19 更新时间:10/3/2011 访问量:8346
加密密码并将其存储在 web.config 文件中
Encrypt and store password in web.config file
问:
我的 web.config 文件中有以下信息。
<appSettings>
<add key="AdminUsername" value="User1"/>
<add key="AdminPassword" value="Password1"/>
</appSettings>
如何加密和存储? 如何解密和使用?
答:
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 本身中的用户名和密码。然后,编写代码以分析虚拟连接字符串中的用户名和密码。
评论