1

これが「質問の種類」ポリシーに準拠していない場合は申し訳ありませんが、これはある程度答えられると思います。

使用するもの: C# .NET4 、WebKit.NET、およびMySQL

UI として WebKit.NET を使用した C#.NET4 (WebKit ブラウザー コントロールを使用した WinForm) を開発しています。すべての HTML はアプリケーション内で定義されます。外部から取得されるのは、リモートの MySQL データベースにあるものだけです。

アプリケーションの C# は、Webkit ブラウザー コントロールのすべてのイベントを処理します。基本的に、特定のイベントに介入し、ユーザー入力の値を受け入れ (該当する場合)、作業を実行します。

外部サーバー上の PHP のインスタンスに接続するようなものではないため、これは危険であると考えています。すべての「サーバー」のような作業は、クライアント コンピューターのアプリケーション内でローカルに行われます。誰かがアプリケーションを壊すことができた場合 (リバース エンジニアリング?)、方法論全体 (ユーザー名、パスワード、テーブル名など) が明らかになります。

デスクトップ アプリケーションでは、サーバー上に配置され、データを受け入れ、クライアント側プログラムに代わって MySQL サーバーに接続するパートナーのようなアプリケーションが存在するのは一般的ですか?

おそらく私は偏執的ですが、クライアント側のバスケットのすべての卵が私を恐れさせます.

4

1 に答える 1

2

クライアント側に検証ロジックのみを配置すると、簡単にバイパスできます。明白な例は、クライアント側の JavaScript でのみ検証する Web サイトです。JavaScript を無効にすると、必要なものを挿入できます。

クライアントに接続用のデータベース パスワードをハードコーディングすると、アプリケーションをリバース エンジニアリングした場合、誰でもデータベースにアクセスできてしまいます。パケット スニッフィングと開いている接続の監視も、詳細を調べる優れた方法です。

何らかの種類のユーザー アカウントが関係している場合は、次のように実装します。

  1. ユーザーがクライアントにログインする
  2. クライアントはログイン資格情報をサーバー アプリケーションに送信します。クライアントは入力を検証できますが、ほとんどの場合、ユーザーを支援し、プロセスを高速化するためのものです。サーバーには SSL を使用してください。そうしないと、パスワードが傍受可能になります。証明書を検証して、それがあなたのサーバーであることを確認すると、すぐに中間者攻撃を取り除くことができます.
  3. サーバーはすべての無効な入力を拒否し、独自の入力検証を実行します。それ以外の場合は、必要なデータベース操作を実行して結果を返します。このようにして、データベースへのアクセスを規制します。さらにリクエストを許可するために、セッション認証を返す場合もあります。または、接続が開いたままになる場合もあります。直接のインターフェースを可能にするために、データベースのパスワードを返すようにはしません。これは、デバッグ ツールを使用して実行中のアプリケーションから抽出できます。
  4. クライアントが結果を受け入れて解析すると、人生は続きます。
于 2012-12-10T00:24:38.903 に答える