2011-09-16 11 views
1

私はMVC3 .Netで動作するブラウザゲームを持っています。私のjavascriptの

if ($.active < 10) { //stuff } 

:誰もが、私は単純に加算時速百万マイルで彼らのマウスをクリックするマクロを使用している人々を停止するには、レベルの競技場にする必要があるため。十分にうまく動作し、うまく動作しますが、クライアント側であるため信頼できません。私はこのサーバーサイドを複製しようとしていますが、私は同等のものを考え出すのにいくつか問題があります。このタイプのセッティングを動かす方が良いと思う人はどこにいますか? IISの設定、web.config設定?私はインターネットの周りを見て、本当に似ているものを見つけることはできません。

思考?

+0

$ .activeに関連してサーバー側で何をしようとしているのか、もう一度説明できますか?このスレッドごとにhttp://stackoverflow.com/questions/3148225/jquery-active-function $ .activeは、jqueryのAjaxリクエストの同時実行数を測定したもので、どのように関係しているのかわかりません誰かがクライアント上でマクロを使用しているかどうか – jfriend00

+0

ユーザーが行う各操作は、サーバーへのリクエストです。マクロを使用している場合、200ミリ秒で200個の要求をキューに入れることができます。 .activeをキャッピングするこれを10に制限することができます。これは200ミリ秒ごとに約10個のリクエストです。それは絶対確実ではありませんが、少なくともユーザーがクリッククォータの上限に達する前にサーバに送り返すことができ、クールダウンする必要があるクリックの量を上限にします。 – boolean

答えて

0

これに対する通常のサーバー側の解決策は「レート制限」と呼ばれます。特定のクライアントからサーバーで関連する要求を識別し、これらの要求の到着速度を把握し、1秒あたりの最大要求数または1分あたりの要求数を選択します。その数を超えた場合は、展開する戦略を決定します。あなたはそれらを遅らせたり、エラーを返したり、接続を外したり、ユーザーをログアウトさせたりすることができます。時には、クライアントがレート制限されていることを知らずに故意に検出し、スループットを最大化しようとしています。

必要に応じて、API内のさまざまな操作に異なるレート制限戦略を選択して、必要な詳細を得ることができます。

正当な実際のユーザーが決してヒットしないレート制限の数値を選択しようとしますが、サーバーやゲームロジックのいずれかを悪用しないようにマシンを制限していることは明らかです。

+0

時々、あなたはちょうどGoogleにパンチするために適切な用語が必要です:) 'レート制限'は正確にこれをカバーする記事の多くを返します!ありがとう! – boolean

関連する問題