1

パスワードで保護された Access 2010 データベースに接続するために OleDb を使用する C# 2010 Winformsアプリケーションがあります。これはオンラインアプリケーションではありません!

私は現在、Eazfuscator.NETを使用して難読化された接続文字列にパスワードをプレーンテキストで保存しています [これは非常に安全ではないことがわかっています] 。逆コンパイルやその他の実用的な方法で取得できないように、パスワードを安全に保存する方法に興味があります。

app/web.config で接続文字列を暗号化することにより、ASP.NET アプリケーションに対してこれを行う方法があることは承知していますが、私のアプリケーションはデスクトップ アプリケーションであるため、うまくいきません。

これまでのところ、これを達成する方法は見つかりませんでした。

これが私がやろうと思ったことです:

データベースにアクセスできるユーザーは 1 人だけであるため、ユーザーにパスワードを要求します。入力パスワードのハッシュ (SHA1 / SHA512) を取得し、ハッシュから特定の文字数を選択してソルトし、接続文字列に追加して接続を試みます。

明らかに、ユーザーがパスワードを忘れた場合、ブルート フォースを使用する以外にデータベースにアクセスする方法はまったくありません。

プログラムの接続文字列で使用されるパスワードを保存して、実用的な手段で取得できないようにする方法はありますか?

4

2 に答える 2

1

データベース用の長いランダムな安全なパスワードを生成し、ProtectedDataクラスを使用して暗号化する必要があります。
これにより、ユーザーの Windows ログオン パスワードを使用して暗号化されるため、ユーザーがログオンしていない限り読み取ることは実用的ではありません。

于 2012-06-03T12:37:59.123 に答える
0

DSN を使用してユーザー名とパスワードをアプリではなくそこに保存することもできますが、DSN を認識しているすべてのアプリはデータベースを使用でき、資格情報はレジストリでプレーン テキストで使用できます。

何を防御しようとしているのか、アプリが暴走しているのですか? データベース?許可されていないユーザーがマシンに座っていますか? パスワードはどこかに存在する必要があります...

于 2012-06-03T13:05:44.580 に答える