0

状況は次のとおりです。セットアップした中央構成ストアからデータベース接続の詳細を取得できる共通ライブラリがあります。各アプリケーションは、データベースを操作するときにこのライブラリを使用します。

基本的に、ストアド プロシージャを呼び出し、「私は {xyz} アプリケーションです。接続する必要があります」と伝え、そのアプリケーションのプライマリ データベース (サーバー、インスタンス、データベース、ユーザー、およびパスワード) の接続の詳細を返します。

アプリケーション {xyz} のみが {xyz} データベースのパスワードを取得できるようにロックするにはどうすればよいでしょうか (アプリケーションごとにデータベースの詳細のリストがあります... パスワードを保護する必要があるだけです)。

4

5 に答える 5

3

通常の方法は、アプリごとに異なる構成ストアを持ち、構成ストアに接続するために各アプリに異なるユーザー/パスワードを与えることです。

これは、誰かがアプリを変更し、アプリ X のユーザー/パスワードをアプリ Y の値に置き換えることを妨げるものではありませんが、特に構成ファイルを介して提供する代わりにこのデータをコンパイルする場合は、もう少し安全です。

本当に安全にしたい場合は、最初にストアへの安全な接続を作成する必要があります (これをサポートする DB ドライバーが必要です)。この接続は、アプリケーションごとに一意で検証可能なセキュア キーを使用して作成する必要があります (そのため、誰もそれらをコピーすることはできません)。実行可能ファイルをハッシュで保護する必要があります (アプリは何らかの方法で独自のハッシュを計算し、それを各アプリの有効なハッシュのリストを持つサーバーに送信します)。

全体として、あいまいなオプションでオンにするだけの簡単なものではありません。まず、セキュリティと安全なデータ交換について多くを学ぶ必要があります。安全でない場所にアプリを安全にインストールし、その整合性を検証し、実行時にアタッチできるデバッガーや仮想マシンで実行されているコードからコードを保護する方法が必要になります。

于 2009-08-14T11:36:17.790 に答える
1

悪意のあるプログラムから身を守ろうとしていますか? また、これはこれらのアプリケーションが接続している中央データベースですか? その場合は、データベースとアプリケーションの間の中間層を検討する必要があります。

上記に対するあなたの回答がどのようになるかによって、これがあなたのケースに当てはまるかどうかはわかりませんが、コメントによると、この質問の内容と同様のケースがあるようです。

C# アプリケーションでデータ層を保護する

于 2009-08-14T12:19:20.003 に答える
1

思いつきで、PKI を試してみます。

于 2009-08-14T11:29:29.613 に答える
0

1つの可能性は、データベース内のパスワードを暗号化された形式で保持し、暗号化キーを許可されたアプリケーションに安全な接続で伝達することです。そうすると、暗号化キーを持つアプリケーションのみが実際にパスワードを取得でき、他のアプリケーションは取得できません。

于 2009-08-14T11:44:34.310 に答える
0

最も簡単で簡単な方法は、パスワードを暗号化された形式で保存し (最近 PerlMonks で実証されたように、パスワードを平文で保存することはとにかく悪いことです)、各アプリケーションに独自のパスワードの暗号化/復号化を実行させることです。アプリが別のアプリのパスワードを取得したかどうかは問題ではありません。

于 2009-08-14T12:30:54.407 に答える