【发布时间】:2017-05-17 21:16:37
【问题描述】:
我正在使用 MVC5 和 EF6 创建一个网站。我也使用共享主机来发布这个网站。现在我遇到的问题是我的连接字符串现在以纯文本形式位于 web.config 文件中。我很难找到关于如何处理这个问题的“直接”答案。
我看过很多文章,例如this one。这篇文章向我展示了如何加密我的 web.config 的连接部分。所以我尝试按照它的示例并加密它在该示例中显示的邮件部分。运行代码后,我注意到我的整个 web.config 文件都发生了变化。
原来是这样的:
<system.net>
<mailSettings>
<smtp from="info@Site.com">
<network
host="mail.Site.com"
port="25"
userName="info@site.com"
password="password" />
</smtp>
</mailSettings>
</system.net>
现在是这样的:
<mailSettings>
<smtp configProtectionProvider="RsaProtectedConfigurationProvider">
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<KeyName>Rsa Key</KeyName>
</KeyInfo>
<CipherData>
<CipherValue>odapFFPDF1Fgsk2wyvbwVC4SNISqhWc9lXiAq+I/OW3wVVqBCPowxyen9M7c9+KUBkXmGSfaUVxDMlqutChv6g6VU8h4TWG3W6Tw/istjfw/UYrRsGguPiOqdvRsl9XLBmnS37v99+VX7FEA9TKb6ufC0a3Defp2MNpGTvTIR20=</CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue>lHPPFRJAH2hIm/Ya+ABRMP5mo5rEYwL2aBJQ/DT4Q+1OZXaftutiddxxJZ4LSgw3pzi1QJpU8eOPwFVebvqFVA4cjs27l8Iqz50E/R/tBfS7e2oqdWTRsc8IFfE/xOIieMp22BuFsYEDbgnIbLdbHJnw+92zyt2lUlzJpW9epNpnb29sVQhtNJ9cPjAaYAaU</CipherValue>
</CipherData>
</EncryptedData>
</smtp>
</mailSettings>
我现在唯一的问题是如何在我的代码中读取这些值而无需解密和保存配置文件。我不想在每次需要阅读邮件设置部分甚至连接字符串部分时重写 webconfig 文件。
如果我有这样的方法:
public static string DecryptMailSettings()
{
var config = WebConfigurationManager.OpenWebConfiguration("~");
ConfigurationSection section = config.GetSection("system.net/mailSettings/smtp");
if (section.SectionInformation.IsProtected)
{
section.SectionInformation.UnprotectSection();
return section.???;
}
return "Nothing was read";
}
如何从上面的示例中获取让我们说“主机”的值。
【问题讨论】:
-
您已选择加密您的整个邮件设置。似乎您只想加密用户名和密码。如果您无法从加密中解开主机名,也许您应该使用您的主机名添加一个简单的应用程序设置键值
-
@DaniDev 我在问如何从加密中解开主机名。
-
我的建议是,如果加密/解密工作正常并且“解开”主机名似乎很麻烦,那么只需为您的
添加一个值。喜欢这个: ,然后在你的代码中阅读它
标签: c# asp.net encryption asp.net-mvc-5 web-config