2016-08-23 14 views
1

私はこれに関する多くの研究を行っており、最良のアプローチが何か不思議に思っていました。多くのユーザーに配布されているWPFアプリケーションがあるシナリオを想像してください。データベースサーバーに接続します。データベースへの接続は、外部ユーザーがアプリケーションへのアクセス権を持つため、接続の安全性には問題ありません。データベースサーバーに接続するためのベストプラクティスC#

app.configファイル内で接続文字列をサーバーに割り当てることはできますが、パスワードとサーバーのIPアドレスを解放することはお勧めできません。研究から、他の人がデータの暗号化を推奨しましたが、確かにこれはまだ脆弱です。

次のアプローチはWCFを使用することですが、これは私には限られた知識しかなく、このアプローチが正しいかどうかはわかりません。

私は接続文字列を暗号化しても安全であるか、それ以上のことはありませんか?機密データを扱う際には特に注意が必要です。

+0

暗号化されたものは復号化することができます。そうするのは難しいかもしれませんが、可能です。したがって、情報はまだユーザーに与えられています。単一のサービスアカウントではなく、個別のユーザーアカウントまたはWindows認証ドメインアカウントを持つことができます。または、データベースを公開することができず、代わりにデータベースを隠すサーバー側のAPIアプリケーションを使用することができませんでした。クライアントアプリケーションは、データベースではなくAPIに接続します。 – David

答えて

0

一般的な方法は、あなたのWPFアプリケーションとデータベースの間のサーバー層を追加することです。それはあなたが好きなように、REST APIやその他のWebサービスにすることができます。選択できるテクノロジーの面では、wcfは1つです。しかし、あなたがサービスを扱った経験がなければ、wcfを使い始めるのは簡単ではありません。 Asp.NetのWeb APIプロジェクトを試して、休憩サービス(http://www.asp.net/web-api/overview/data/using-web-api-with-entity-framework/part-1)を迅速に確立することをお勧めします。

このサーバーレイヤーは、データベース情報(接続文字列など)を保護します。また、アプリケーションで直接データベースにクエリを実行させると、データベースに進化するのを防ぐことができます。たとえば、テーブルに制約を追加すると、クライアント側で挿入クエリが壊れることがあります。その間にサーバーを置くことで、サーバー側の実装とデータベースを同時に更新することができます。

0

データの機密性が高い場合は、SOAアーキテクチャを使用することをお勧めします。 WCFは良い選択ですが、RestFulWCFやWebApi2.0(マルチプラットフォームサポートで普及しています)を考えてください。これが役立つ

希望:)

関連する問題