6

すでに多くの議論があると思いますが、アプリケーションにパスワードを保存する方法は? (データベース内のテーブルに格納されるユーザー パスワードではなく、接続文字列を作成するためのパスワードを意味していました)

xmlファイルなどのフラットファイルに暗号化して保存し、実行時に読み取り+復号化するなどの提案を見てきました。このアプリケーションがサーバー上で実行される場合、これは非常に良い選択ですが、アプリケーションがエンド ユーザーの PC に展開される場合はどうでしょうか。つまり、フラット ファイルがユーザーの PC にコピーされます。これはまだ良い習慣ですか?(私の本能は「NO」です)

私は SecurityString の存在を知っていますが、SecurityString にも簡単に侵入できるという 1 つの投稿を読みました。

Windows 7 に付属の Password Vault を使用するのは良い考えですか? プログラムでそれを利用する良い例はありますか? msdn で例を見たことがありますが、まず「windows 8」というラベルが付いています。次に、ファイルをダウンロードして Visual Studio 2012 EXPRESS でソリューションを開いたときに、開くことができませんでした。

どんな提案も大歓迎です...どうもありがとう。

- アップデート -

たとえば、アプリケーションが Windows ドメイン内の少数の PC で実行されるとします。(1) 起動時に、アプリケーションは LDAP 認証 (アクティブ ディレクトリ) を行います。認証が成功した場合にのみ、アプリケーションは実行され、(2) アプリは舞台裏でデータベースに接続し、ユーザー入力を取得して db を照会できます。ここで、db passwd が関与して接続文字列を構築します。 (いいえ、これは SQL SERVER データベースではないので、商用プラグインを使用しない限り、Windows 認証を使用するオプションは実行可能ではないと思います)。

データベースは同じドメインに存在し、特定の範囲の IP アドレスを許可するように設定されており、SSL が有効になっています。要するに、この意味で非常に安全です。まだ安全ではない唯一のビットは、アプリケーションの db passwd を保存する方法です。

私の目を引いたのは、Mysql Workbench でした。パスワードボールトに保存されているパスワードを含むデータベース接続を保存します。これは mysql 独自のパスワード ボールトの実装であり、それがどのように行われるのか非常に興味があります。

4

2 に答える 2

8

ユーザーにパスワードを与えて、それが安全であり続けることを期待する方法はありません。コンパイルされたアプリケーションに隠されていて、一方向ハッシュでハッシュされている場合でも、決定されたものはそれを回復します。

代わりに、セキュリティアーキテクチャを検討する必要があります。

アプリケーションが接続するサービスを提供している場合は、パブリックAPIの一部として何らかのより堅牢な認証を提供することを検討する必要があります。

接続文字列が分散ソフトウェアの別の部分に接続するためのものである場合は、エンドユーザーがパスワードを構成できるようにして、キーリングまたはその他の暗号化されたストレージに保存する必要があります。

- アップデート -

これはあなたが探しているものかもしれないようです。

http://www.microsoft.com/indonesia/msdn/credmgmt.aspx

于 2012-12-11T16:33:31.320 に答える
5

システム セキュリティをまったくまたはほとんど制御できない場所、つまり外部ユーザーの PC にアプリケーションを展開する場合は、ユーザー ログインを作成する価値があります。このログインに対してユーザーを認証し、比較的安全なサーバーから、データを提供するために必要な資格情報を使用します。

これはセキュリティを保証するものではありませんが、将来のある時点でパスワードを変更する必要がある場合、または個々のユーザーが危険にさらされた場合に維持しやすくなります。

于 2012-12-11T16:31:22.770 に答える