SQL Compact DB を暗号化する方法は、接続文字列でパスワードを指定するだけの簡単な方法であると教えてくれるリソースをいくつか見つけました。しかし、そのパスワードを自分の web.config ファイルに残すのは気が進まないのです。実行時に DbContext の接続文字列を動的に指定できることはわかっていますが、それでも接続文字列にプレーン テキストのパスワードを含めています。このパスワードが脆弱なコード内のポイントを最小限に抑えるにはどうすればよいですか?
2 に答える
明らかに、ホスティング会社がサーバーにアクセスできる場合、勝つことはできません. 彼らが本当に望んでいるのであれば、彼らがパスワードを知るのを防ぐことはできません。
したがって、できることはパスワードを難読化することだけです。良いトレードオフは、次のようにソースコードにパスワードをハードコーディングすることだと思います:
var plainPassword = Enconding.UTF8.GetString(Convert.FromBase64("encoded-pw-here"))
保護する必要があるのは、単純な文字列検索などからです。これ以上のことはできないし、するべきではないと思います。
サーバーでパスワードを取得することを恐れるのはなぜですか? ほとんどのシステム (database.yml ファイル内の Rails など) は、接続をどこかに保存します。
しかし、それを保護するためにできることは、接続を保持する encryption.dat ファイルを作成することです。web.config ファイルに接続の「名前」を配置するだけで、接続文字列を暗号化/復号化して実行時に配置できるクラスが必要になります。
ここにあるサンプル プロジェクト: http://www.codeproject.com/Articles/14150/Encrypt-and-Decrypt-Data-with-C
しかし、これで 100% のセキュリティが得られるわけではなく、努力する価値があるとは思えません。誰も許可なくアクセスできないように、Windows セーバーが正しく保護されていることを確認してください。