1

Web サービスと、この Web サービスを呼び出すクライアント アプリケーションを構築するとします。

私以外のソフトウェアが Web サービスを呼び出すのを防ぐ方法はありますか?

たとえば、1 時間に 1 回しか利用できないアイコンをクリックすることでプレイヤーがいくらかのお金を獲得できるゲームを想像してみてください。ユーザーが接続されている場合は、まあ。ユーザーが接続されていない場合、ユーザーはお金を得るために時間枠を「緩め」ます。

標準的な Web サービス + クライアントでは、10 代の若者が Web サービスを実行するためのスクリプト/偽のアプリを作成するのは非常に簡単です。

どうすればそれを回避できますか? 魔法のような解決策がないことはわかっていますが、少なくとも、そのようなツールの作成を難しくするにはどうすればよいでしょうか?

PS: 私は Microsoft .Net プラットフォーム + SilverLigth を使用していますが、この質問は MS テクノよりも広いと感じています。

[編集]明確にするために、認証を追加する方法は尋ねませんが、ユーザーがWebサービスへの呼び出しを自動化するのを回避する方法を尋ねます。アカウントを持つユーザーがそのアカウントを使用して呼び出しを自動化することを妨げるものは何もありません。私が避けたいのは、たとえば、実際の認証を使用して偽のアプリを作成し、ユーザー入力の代わりに 5 秒ごとに何かを実行することです。ゲームでは、これは農家のロボットを避けることができます

4

2 に答える 2

0

WCF Web サービス メソッドは、セキュリティ要件で装飾できます。これには、Silverlight 用の RIA サービス (基本的には単なる WCF サービス) が含まれます。

基本認証を要求することも、ユーザーが特定の方法を使用するために特定のロールのメンバーである必要があることも要求できます。

これはもちろん、アプリケーションが認証を使用する必要があることを意味します (つまり、ユーザーはログインする必要があります)。

代わりに、独自の認証システム (トークンなど) を提供することもできますが、これには、アプリが (少なくとも) 最初にサービスにログインして新しいトークンを取得する必要があります。

[編集] フォローアップへの回答として、ロボットの検出は通常、通話間の時間または平均時間を記録し、制限を超えた場合は単にアクセスを拒否する場合です。(または、本当に意地悪な場合は、アカウントをキャンセルするか、ゴミデータを返し始めてください)

于 2011-06-15T12:52:10.653 に答える
0

サーバーがゲームの状態をより認識できるようにする必要があります。たとえば、概要を説明した場合、サーバーは、ユーザーがクリックできるお金のアイコンが画面上にあるかどうかを認識している必要があります。「クリック オン マネー」のリクエストを受け取った場合、実際にお金が画面に表示されているかどうかを確認する必要があります。おそらく、各ユーザーに「最後にお金をクリックした」変数を追加するだけで十分でしょう。ただし、これにより、頻度を制限することはできますが、ボットがゲームに参加していなくても「お金をクリックする」ことができます。おそらく、より堅牢なものを使用できます。画面にお金のアイコンを表示するときなど、お金のアイコンをクリックするのではなく、実際に画面に表示された実際のお金のアイコンをクリックしたことを確認するために、有効な呼び出しで送り返すことができるランダムなキー値 (GUID など) を含めます。 、あなたは彼らが何をクリックしているかを正確に知っています。これにより、スクリプトの記述がより困難になります。お金のアイコンに関連付けられた GUID を特定し、それを要求と共に送信するために、ゲームのメモリ コンテンツを調べなければならないからです。これはまだ可能ですが、はるかに困難です。

于 2011-06-15T14:00:26.653 に答える