web-dev-qa-db-ja.com

App.configでパスワードを暗号化する

接続文字列のパスワードを暗号化します。 DBに接続すると、接続文字列がApp.configにオープンに保存され、パスワードのみを暗号化する方法を見つける必要があります。

25
NDeveloper

これが接続文字列であるとしましょう:

<connectionStrings>
    <add name="cs" connectionString="Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=XXSDFASFDKSFJDKLJFDWERIODFSDFHSDJHKJNFJKSD;"/>
</connectionStrings>

その後、次のようなことができます:

string myCs = System.Configuration.ConfigurationManager.ConnectionStrings["cs"].ConnectionString;

System.Data.SqlClient.SqlConnectionStringBuilder csb = new System.Data.SqlClient.SqlConnectionStringBuilder(myCs);
csb.Password = EncDecHelper.Decrypt(csb.Password);
myCs = csb.ToString();

あなたは書ける EncDecHelper.Decryptここからサンプルを使用して: 文字列の暗号化と復号化

21
HABJAN

connectionStrings 構成セクションを使用し、パスワードだけでなくセクション全体を暗号化します。

アプリの設定にはプレーンテキストのサーバー名とユーザー名も含まれないため、これはより安全です。

[〜#〜] rsa [〜#〜] または [〜#〜] dpapi [〜#〜] の構成セクションを暗号化するためのハウツードキュメントがあります。 。

19
Oded

他の答えに加えて、ソース管理でファイルをテンプレートとして使用し、dev/testで機能するようにdev/testで暗号化された接続文字列のみを使用する方が良いとは言えません。

本番(またはアプリがデプロイされる他の環境)の場合、暗号化された資格情報ファイルは、指定されたテンプレート形式に個別に生成され、個別に管理/更新/デプロイされ、DBA/DevOps以外には見られない適切なセキュリティ権限が適用されます。

0
TenG