1

SQLConnection文字列を暗号化する方法はたくさんあるので、VB.NETプログラム内で使用して、.exe自体を逆アセンブル/逆コンパイルする人が接続文字列を簡単に読み取らずにSQLデータベースに接続できることを理解しています。 。

私はこの投稿を知っています:SQL接続文字列c#を暗号化します

構成の安全なセクションとエンタープライズライブラリデータアクセスアプリケーションブロックの2つの主な方法について説明します

これで、構成セキュアセクションを適応させました。ここでは、接続文字列をapp.configファイル内で暗号化し、プログラムで復号化して接続文字列を取得できます。これは、暗号化されたのと同じコンピューターでのみ復号化できることを知っていますが、これは問題ではありません。

私の質問は、これらの方法がどのように効果的かということです。誰かがそのコンピュータ上に、同じ方法で復号化するプログラムを作成する必要はありませんか?

ハッシュやMD5暗号化などを使用している場合でも、復号化メソッドはプログラム内にあり、逆コンパイラー/逆アセンブラーから抽出できます。

データを本当に保護する唯一の方法は、ある種の難読化ツールを購入し、それを暗号化/復号化コードで使用して、最高のものを期待することですか?または誰かが最善の方法を知っていますか?


私が行ったことは、ログインするためにユーザー名とパスワードを必要とするプログラムを作成し、同じデータベースに存在する情報に基づいてSQLクエリを実行できるようにすることです。Webサイトを使用できません。.NETプログラムを使用して実行する必要があります。このプログラムは、全米の多くのお客様に提供されています。これは、この背後にあるセキュリティが本当に必要であることを意味します。

4

3 に答える 3

2

これを行うための本当に安全な方法は、SQLに直接接続しないことです...

データベースと通信するAPI/Webservice/Similarをインターネット上に作成します。その後、クライアントはAPIに対して認証を行い、リクエストを行うことができます。

これにより、いくつかの利点が得られます。

  • クライアントは接続文字列を知りません
  • データを変更するコードが管理下にあり、変更されていないことを保証できます
  • ユーザーと役割に基づいて、はるかにきめ細かい権限を提供できます
  • 逆コンパイル/リバースエンジニアリングでは、コードを適切に記述している限り、機密性の高いものは何も明らかになりません(組み込みの認証メカニズムを使用し、独自の認証メカニズムを使用しないでください)。
  • SQLサーバーを移動する必要がある場合は、DNSエントリなどの保守について心配する必要はなく、APIで接続文字列を更新するだけです。

(@BlamがOPのコメントでこれについて言及していることに気づきました)。

それで、より詳細を与えるために...

ビジネスロジック(または同等のレイヤー)を取得し、Webサービスを介してメソッドを公開します。Blamが示唆したように、WCFは開始するのに最適な場所です。これにより、ビジネスロジックを適用し、データベースへのすべての変更をコードで管理できます。

WCFの使用を開始するためのヘルプについては、ここここをご覧ください

于 2012-09-05T18:51:16.853 に答える
1

サービスは回答済みですが、新しい価値を追加してみます。

WCFサービスは通常IISでホストされますが、クライアントはVBのままにします。

今日のVBでは、おそらくユーザー入力を使用してクエリを指定します。SQLでクエリを実行します。次に、その結​​果を使用して、データまたはビジネスオブジェクトのリストを作成します。

WFCを使用すると、サービスのメソッドを呼び出すことができます。MyServiceの背後にあるものはすべて、ユーザーPCから隠されています。

List<busObs> myBusObjs = MyService.GetBusObj(string userCriteria);

開発者によるWindowsCommunicationFoundation4の概要

これは、3層アプリケーションと呼ばれます。

もう1つの利点はメンテナンスです。PCを更新せずにWebサービスレイヤーを更新できます。

もう1つの利点は、知的財産の保護です。私がWCFサービスの背後に隠されている独自のアルゴリズムがあるアプリケーションで作業しているように。クライアントは単なるUIレイヤーであるため、誰かがクライアントをリバースエンジニアリングすることはできますが、私たちの優れた機能は得られません。

于 2012-09-05T19:22:16.303 に答える
0

もう1つの解決策は、ストアドプロシージャを介してすべてのデータアクセスを処理することです。SQLデータベースの組み込みのセキュリティと権限を使用して、アプリケーションのユーザーをアプリで実行できるデータプロセスに制限し、基になるデータを保護します。

事実上、ストアドプロシージャは、アプリケーションのデータAPIを表します。ただし、本格的なWebサービス/ APIを使用すると、サーバーなどを長期的に柔軟に変更できます。

于 2012-09-05T18:56:19.697 に答える