2009-07-02 11 views
4

私のwinformsアプリケーションでは、ローカルレベルで接続文字列をハッシュしています。中間の人間から接続文字列を保護する

しかし、ここでの質問のカップル。

私のアプリは、接続文字列を復号化した後、接続文字列情報はクリアテキストで送信されますか?私のアプリはローカルにインストールされているので、真ん中の人はどんなユーザーでもかまいませんか?

どのように私は、接続文字列を保護することができ、余分な証明書が必要な「強制暗号化」オプションを、becides?

+0

あなたのアプリはハッシュを解読できますか? – yfeldblum

答えて

7

あなたの接続文字列を安全かつセキュアに保つに関連して、ここでのアプローチの限られた量を持っています。

一つのオプションの接続文字列が(それぞれ、ウェブおよびWindowsアプリケーションのための)web.configファイルまたはapp.configをファイルに保存されている場合は、値を暗号化することができます。もちろん

Encrypting Web.Config Values in ASP.NET 2.0

Encrypt Connection Strings in VS 2005 .config Files

を、あなたは非常に当然のアプリケーションがありますので、これは、あなたが望むセキュリティを達成できないことがあり、言うように:ここでそれを行うことができる方法を詳細リンクのカップルですユーザーのマシン上で実行され、app.configファイル(暗号化された状態であっても)と関連付けられた暗号化/復号化キーもユーザーのマシンで使用できるようになります。知識豊かで進歩したユーザーは、「プレーンテキスト」の接続文字列にアクセスできます。

IMHOは、ユーザーにデータベース接続文字列が表示されないようにするための最善の方法の1つです。これは、あなたのWindowsフォームアプリケーションが(接続文字列を使って)データベースに直接話すのではなく、むしろWebサービスに直接話すことを要求します。

もちろん、WindowsフォームアプリケーションにはWebサービスにアクセスできるURLを与えますが、このWebサービスの使用はユーザー固有のユーザー名とパスワードの組み合わせでしかアクセスできないように制限され、制御されます。その物理的に別のサーバ/マシン上で -

この方法では、Webサービスを(それはあなたのWindowsフォームのアプリケーションが.NET remotingまたはWCF上で通信するリモートアプリケーション可能性がありweb serviceである必要はありません)をホストすることができますあなたを実行するperimeter securityでこのマシンを完全に制御して保護します。

データベースの接続文字列にアクセスできるのは、この安全なマシン上で実行しているアプリケーションとサービスです。この接続文字列は、このマシンの境界外に漏らされることは決してありません。上記の境界セキュリティが存在し、効果的であると仮定して)。

もちろん、これらのすべてを実装することは、アプリケーションのサイズや性質に応じて、アプリケーションにとって巨大なアーキテクチャ上の変更を意味することになります。ただし、アプリケーションを本当に保護する唯一の方法はユーザー(またはユーザーのマシン)がユーザー(またはユーザーのマシン)に対して(暗号化または復号化された形式で)利用できないことを確認することです。

暗号化された状態であっても、ユーザーのマシンに接続文字列を入力すると、同じマシンにその暗号化された接続文字列を復号化する能力を与え、チェーンには弱いリンクがあります。あなたのプレーンテキストの接続文字列を決定できるポイントです。暗号化された接続文字列の解読を別の(安全な)マシンに委託することはできますが、これはセキュアに保たれている部分(解読キー、接続文字列など)が実行される前述のクライアント - あなた自身の安全な制御下で別のマシンにMSDNで

+0

"ですが、このWebサービスの使用は制限され、ユーザー固有のユーザー名とパスワードの組み合わせでのアクセスのみを許可することで制限されます。" ...鶏と卵の問題は...?/password – BlackTigerX

+0

@BlackTigerX - あなたが言っていることは分かりますが、Webサービスで使用するユーザー名とパスワードの組み合わせをアプリケーションでハードコードする必要はありません(接続文字列はどこかにある必要があります)。ユーザーが実行時に提供する必要のある資格情報である手動認証メカニズム(Windowsへのログオンなど)に結びつけることができます。 – CraigTP

4

接続文字列を保護することはできません。あなたができることは、SSLセキュアチャネル経由で接続することです。

0

このページでは、接続のためにSSLを実装する方法について説明します。

http://support.microsoft.com/kb/316898

そして、この1つはSQL認証(ASP.NET用)説明:

http://msdn.microsoft.com/en-us/library/ff648340.aspx

それをあなたは本当にユーザー名とパスワードを暗号化する必要があるようですか?その場合、Windows認証はオプションにする必要があります(私にはうまく機能しなくなることがよくあります)。

関連する問題