4

現在、多くのマシンで .net アプリを実行しています。データベース接続文字列は、それぞれの設定 XML ファイルに保存されます。各アプリケーションが起動し、最初のステップとして、設定ファイルからこの文字列を読み込みます。問題なく動作しますが、ログイン情報を変更する必要が生じた場合、何年にもわたって保存してきたすべての場所を見つけるのは悪夢です。さらに、仮想マシンでは常に新しいマシンを追加しているため、単に exe/dll を展開し、アプリに接続文字列を自動的かつ安全に取得させることが理想的です。

文字列を暗号化して Web サーバーに配置し、リモート アプリが http および dns 名を介して文字列をフェッチして復号化できるようにすることを検討しましたが、これはかなり単純であり、この情報にはセキュリティが非常に重要であるため、十分に注意する必要があります。

問題は、リモート アプリへの接続文字列を安全にデシメーションして、起動時にデータベースに到達することを認識させるにはどうすればよいかということです。それができたら、データベースの構成テーブルから追加の設定を取得できます。

4

1 に答える 1

3

システムのどの部分を信頼していますか? クライアントが接続文字列 (必要な接続文字列) を取得すると、必要な DB に対して何でもできるため、クライアントを 100% 信頼する必要があります。また、サーバーを信頼する必要があります。

だから、みんなを信頼しているようです。これにより、システムの保護が容易になります。接続文字列をどのように配布しても、システムはすでに保護されています。

パスワードと接続文字列の保存と配布に関しては、多くの迷信を見てきました。多くの人は、平文で送信および保管されることに不快感を覚えます。クライアントは最終的にそれを明確に持っているので、それは不合理です。それを防ぐことは不可能です。

私のアドバイスは次のとおりです。次の API を提供する単純な Web サービスを作成します。

string GetConfigSetting(string name)

クライアントは、そのサービスに接続文字列を要求できます。このサービスは非常に単純であるため、そのインターフェースはおそらく変更されることはありません。

この場合、暗号化を気にする必要はほとんどありません。クライアント アプリケーションは、簡単に逆コンパイルして、任意の復号化ルーチンにアクセスできます。また、クライアントは最終的にシークレットを復号化する必要があります。この時点で、クライアント マシンを制御する攻撃者は、シークレットを平文で読み取ることができます。

于 2012-12-20T12:58:21.337 に答える