MVC5 & EF6を使用してWebサイトを作成しています。私はまた、このウェブサイトを公開するために共有ホスティングを使用しています。今私が持っている問題は、私の接続文字列がweb.configファイルにプレーンテキストで置かれているということです。私はこれにどのように対処すべきかについての「直接的な」答えを見つけるのは非常に困難な時を過ごしています。共有ホスティングでの接続文字列の保護
this oneなど多くの記事があります。この記事では、web.configのConnectionセクションを暗号化する方法を紹介します。だから私はその例に従い、その例で示したメールセクションを暗号化しようとしました。コードを実行した後、私はweb.configファイル全体が変更されたことに気付きました。
それはこのようなものに使用:
<system.net>
<mailSettings>
<smtp from="[email protected]">
<network
host="mail.Site.com"
port="25"
userName="[email protected]"
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
@DaniDev暗号化からホスト名を切り離す方法を尋ねています。 – Bojan
私が示唆しているのは、暗号化/復号化が正常に動作していて、ホスト名が「絡み合っていない」ように思えるなら、に値を追加するだけです。このような : <キー=「MAILHOST」値=「mail.Site.com」追加/>を、その後、 –
DaniDev