2016-05-10 14 views
0

すでにこのトピックに関する多くのSO投稿がありますが、質問のいくつかはすでに2〜3年前であるため再度お聞きしたいと思います。提案プロセスのMYSQLをWindowsフォームに接続するための最も安全な方法C#

リスト

  • 回答のほとんどは、接続文字列を作成し、その後App.configファイルにアクセスすることを示唆しています。暗号化は可能ですが完全に安全ではありません。

  • は、すべてのSQLプロセスが

  • は3層アプリケーションを作成したサービスであり、接続のためのWebサービスを作りますか?

正直言って私は最初のものをちょっと理解するだけで、他の2つは初めてです。ですから、私の質問は最も安全で簡単に実装できるものでしょうか?

ビルドしたいプロジェクトの背景:ログインすることができ、ウェブサイトにリダイレクトされるデスクトップアプリケーションが、さまざまな人に提供されます。つまり、ウェブサイトのデータベースは既に存在していますが、ログインできるようにデスクトップアプリケーションを作成する必要があります。すでにWebサイトがある場合、デスクトップアプリケーションを作成する必要があるのはなぜですか?それは物語の別の側面です:)誰かが私に洞察力を与えることを願っています。

答えて

1

本当にセキュリティが必要な場合は、暗号化された形式であっても、接続文字列にエンドユーザーがアクセスできないようにする必要があります。デバッグしたり、.NETコードを逆コンパイルすることさえ難しいことではありません。難読化はそれを助けることができますが、コンパイルされたコードをエンドユーザーが読むことができるものとして扱うことをお勧めします。つまり、コードで解読できる場合は、十分に精通したエンドユーザーツールもできます。効果的には、適切にセキュリティを確保するためのWebサービスなど、何らかの仲介が必要なことを意味します。 Webサービスは、接続文字列のように完全に制御することができます。これは、WebサービスをAPIとして外部の当事者に提供していた場合と同じ原則です(あなたのように書くことは悪い考えではありません)。

Webサービスを作成するのはかなり面倒で、変更トラッキングなどのことを維持するのに苦労する可能性があるということです(EFにはいくつかの解決策があるかもしれませんが、私はそれらを見ていません)。これは、Windowsフォームではなく、最近多くの人々がWebベースのアプリケーションを作成している理由の1つです(そして、Windowsフォームが本当に必要かどうか、あるいはWebベースのほとんどをWebベースで行い、 Windowsフォームの一部)。

設定ファイルでエンドユーザに接続文字列を提供したくない場合は、Webサービスを使用してユーザ(または少なくともあなたのアプリ)が本物であることを認証し、ディスクに保存されない暗号化された接続文字列を提供します。それは、それを得る方法を解くためにデコンパイルされているアプリケーションを止めるものではありませんが、それはより困難になります。特定の状況にどれくらいの問題セキュリティがあるかについて判断を下す必要があります。

+0

hmm。それは良い視点です。 aspnet_regiis.exeの安全性について最初に調べます。他のコンピュータにも実行されたら、自分のPCでコンパイルすれば分かりますか?または暗号化は私のPCでのみ読むことができますか? – Believer

+0

aspnet_regiisについてどういうことが考えられますか? – wizzardmr42

+0

暗号化に使用されます。 – Believer

関連する問題