0

ユーザーが最初に使用するときに、データベースに接続するための接続文字列を指定し、後でWindowsクライアントアプリケーションで変更できるようにする必要があります。私の現在の考えは、ユーザーがアプリケーションを開いて使用するたびにチェックされるテキストファイルに情報を保存し、情報が削除された場合や無効な場合は更新を求めることです。ただし、これがこの問題を処理するための安全なアプローチであるとは確信していません。これをより適切に管理するのに役立つ他の提案をいただければ幸いです。

4

4 に答える 4

1

あなたはできる

  1. パスワードを管理する必要がないように、SQL用のWindows認証を使用してください。
  2. CryptProtectDataを使用して、パスワードをエンコード/デコードし、ディスクに保存します

CryptProtectDataのドキュメントから

CryptProtectData関数は、DATA_BLOB構造のデータに対して暗号化を実行します。通常、データを暗号化したユーザーと同じログオン資格を持つユーザーのみがデータを復号化できます。さらに、暗号化と復号化は通常、同じコンピューターで実行する必要があります。例外については、備考を参照してください。

したがって、保存されたパスワードで暗号化されたテキストが1-1マッピングされている場合、SQLとWindowsのログインが異なる可能性がありますが、比較的安全です。

于 2012-09-24T15:40:59.160 に答える
1

通常の方法で、app.configに保存します。コード内の設定を簡単に変更できます。方法は次のとおりです

また、おそらく暗号化する必要があります。これは、アプリケーションの起動時にも実行できます。設定を変更するのと同じくらい簡単に、コードから暗号化/復号化できます。方法は次のとおりです。

于 2012-09-24T15:41:25.527 に答える
0

接続文字列をApp.Configまたはレジストリのいずれかに保存します。実行時にApp.Configを変更できるとは思わないので、アプリケーションでデータベースを使用している場合は、それを最初に選択する必要があります。そうでない場合は、フラットファイルまたはレジストリを使用してください。あなたは間違いなくそれを暗号化したいと思うでしょう。文字列を暗号化および復号化し、Base64でエンコードする方法については、この質問を参照してください。

于 2012-09-24T15:43:46.803 に答える
0

まず、最初の接続文字列を取得するための独自のダイアログは作成しません。代わりに、MicrosoftがリリースしたVS2010データベース接続ダイアログを使用できます(ここからダウンロード)。これにより、ハードワークを行うことなく(そして、ほとんどすべてのリモート接続で)、必要な処理を正確に実行できます。

いいえ、接続文字列情報を保持しても、重大なセキュリティ問題が発生することはありません。接続にセキュリティを提供するのは接続文字列自体であるため。保存した接続文字列にパスワードが含まれていないことを確認し、連続する接続ごとにダイアログを表示する必要があります。パスワードなしでWindows認証を使用する場合は、もちろんセキュリティの問題が発生する可能性がありますが、正しいセキュリティを使用するのはユーザーの責任です。

上記が十分でない場合は、接続文字列をに格納しProperties.Settings.Default、.NETライブラリの1つ、またはハッシュを使用して文字列を暗号化します。これには多くのアプローチがありますが、参照されたダイアログを使用して最初の接続文字列を取得し、これをプロパティを使用してアプリの.configに保持します。単純。

これがお役に立てば幸いです。

于 2012-09-24T17:09:14.900 に答える