2011-08-18 10 views
6

WinFormアプリケーションでConnectionStringを保護する方法はありますか?WinFormアプリケーションのSecure ConnectionString

+0

これは、C#コードencryp the hole section [link]を使用して完全に使用できます(http://stackoverflow.com/questions/37573551/encrypt-app-config-custom-element-using-cmd?answertab=active#tab -top) –

答えて

18

できません。 app.configファイルで接続文字列を暗号化することはできますが、アプリケーションで暗号化を解除できる必要があるため、特に暗号化されていない接続文字列を取得することは可能です(通常は、どの熟練した開発者もこれを行うことができます)。

これに対する解決策は、security by obscurityです。 Windowsユーザーアカウントを使用してデータベースに接続するときはWindows統合セキュリティを使用し、データベースに最小限の権利を与えます。

これはまだ十分ではありませんが、エンドユーザーがデータベースに直接接続されている場合(多くの場合、行レベルのセキュリティが必要なため)、データベースを十分に保護することは非常に難しいことがあります。これを行うには、テーブルやビューへのアクセスを拒否し、完全にストアドプロシージャに戻す必要があります。

しかし、より良いアプローチは、デスクトップアプリケーションがデータベースと直接通信するのを防ぐことです。中間層としてWebサービスを使用します。その場合、セキュリティを完全に制御できます。接続文字列を(Web)サーバーに安全に保存できます。

+3

+1は「できません」です。特にマネージドアプリケーションには絶対的なセキュリティはありません。 Webサービス層を含めたり、データベースからユーザを隔離するなど、セキュリティを強化することはできますが、完全ではありません。あなたは、アプリの構想からそれを考慮に入れなければなりません。 –

+0

@Steven "Windows統合セキュリティ"へのリンクが壊れています。 :) –

0

これは、「それぞれにそれらの一つだそうです...それに有限の答えがあるように思われません...ここ

Encrypting sections and-or settings in an App.config file that will be redistributed

に多くのことを尋ねています自分の "タイプのシナリオ...あなたの状況に最も適したものを使用してください。

+0

答えは非常に有限です。あなたの危険なコメントは答えの形で誤解を招きます。 – MickLH

+0

ハッキングによる復号化を防ぐために、何かが所有者の仕事を暗号化しているように、定期的に「秘密鍵」を変更してください。あなたが設定全体を暗号化したり、その一部を暗号化している天気は、「選択肢まで」、したがって有限ではありませんが、おそらく有限ではないかもしれません。 – War

+0

あなたはポイントを逃した、ポイントは、設定を暗号化することは間違っているということです。重要なデータへの安全なインターフェイスを提供する必要があります。 – MickLH

関連する問題