サーバーが不正なクライアントから身を守る方法はたくさんあります。この特定のケースでは、サーバーが、人間が操作するのが妥当であると考えるクライアントからの 1 分あたりの操作の最大数をサーバーが選択する場合、および 1 つのクライアントからの操作の速度がそれ自体を保護する速度を超える場合に、おそらく「レート制限」が適切です。 . 自分自身を保護するためにどのように選択するかは、状況によって異なります。多くのサーバー リソースを使用しないようにするために、しばらくの間新しい要求が発生するたびにすぐに失敗したり、クライアントをログアウトしたり、サイレントに失敗したり、エラーを返したりする可能性があります。
ajax 呼び出しは、自分のクライアント コードだけでなく、誰でも実行できるため、サーバーは、この種のことに対する実際の保護をサーバーで行う必要があることを認識しておく必要があります。
クライアントでは、さまざまな方法で不正な JavaScript が注入されるのを防ぐことができます。コードの下部で、レート制限を実装して (実際の ajax 呼び出しを行う直前など)、1 分間に X 回を超える ajax 呼び出しの実行を拒否することもできます。これはサーバーを完全に保護するわけではありませんが、独自の AddToCart() 関数がこのように使用されることから保護します。
または、この方法で呼び出すことができるパラメーターを必要としない最上位のグローバル名前空間関数がないようにすることもできます。これを行うには、関連する機能をグローバル名前空間から削除する (適切な「this」ポインターを必要とするオブジェクトの 1 つのメソッドにする) か、常にそうであるとは限らない関連する内部状態を関数に要求させることができます。知られています。
個人的には、大混乱を引き起こす以外に行われている正当な目的がない場合に、所有者がクライアントに与える可能性のある虐待からクライアントを保護する必要があるとは思いません。ユーザーが自分のクライアントをクラッシュさせる悪いことをしたい場合は、それで問題ありません。必要に応じて、タスク マネージャーを使用してクライアントをダウンさせることができます。サーバーに悪いものを吹き付けないように保護し、正当な通常のユーザー操作で発生する可能性のある何か悪いことから保護したいのですが、ユーザーが自分のクライアントを停止したい場合は、睡眠を失うことはありませんそれ。