2011-09-09 12 views
3

web.configファイルに次の情報があります。web.configファイルにパスワードを暗号化して保存する

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

どのように暗号化して保存しますか? どのように復号化して使用しますか?

+0

同じ回答がありました。 http://stackoverflow.com/questions/6291322/how-to-encrypt-username-and-password-in-web-config-in-c-2-0 – Roshe

答えて

2

は親切の記事を参照してください - http://msdn.microsoft.com/en-us/library/k6h9cz8h%28v=vs.80%29.aspx

コマンドは次のとおりです。

Aspnet_regiis.exeに-pe "のappSettings" サイト "MySharePoint" -app "/"

MySharePointは仮想ディレクトリです。 web.configファイルもディレクトリ内になければなりません。

+0

私は、 appconfigセクションは全体ではありません。 Roshe

+0

答えを更新する - これでappSettingsセクションのみが暗号化されます。それが役に立てば幸い。 –

2

aspnet_regiisまたは同等のAPIを使用して設定セクションを暗号化することの欠点は、セクション全体を暗号化することです。

セキュリティ上の観点からは優れていますが、管理者は同じセクション内の他の重要でない設定データを検査することがより困難になります。 appSettingsは、管理者がよく調べたいセクションです。

1つのオプションは、(例えば<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

ダミーセクションの暗号化について少し詳しく説明できますか? – Roshe

+0

@Nilaa、私の提案はdummy * connectionString *で、ダミー*セクションではありませんでした。サンプルコード - providerNameの空の文字列を持つ接続文字列、およびconnectionString自体のユーザー名とパスワードを参照してください。ダミーの接続文字列からユーザー名とパスワードを解析するコードを記述します。 – Joe

関連する問題