質問

最近、私は、見つけた巨大なセキュリティ上の問題と私はPMできるシステムユーザーのメッセージを送信するためにどうしたいと for ループのアドレスバーがあります。誰かこのアドレスバー:

javascript:for(x=0;x<10000;x++){ $('#compose form').submit(); }

のメッセージが送信された1000倍してくれ、私の受信トレイにしたのと同じメッセージのデータベースであるphpMyAdminがあっlaggy.

がこの質問にびっくりするのってしまいます。この 主要 の問題です。

また、フォームを送AJAX.

編集:

使用カレンダー表示になってしまいます。のようにどのようにしたら良いですかですがメッセージで送信する5分毎であれば、提出を一つ以上5分以内に表示されますのでエラーにはないことになユーザからのフィードバック、だから停止している投稿中)?

役に立ちましたか?

解決

が明らかな方法で固定し、問題があるのではなく、クライアント側- それはそれは、サーバ側.

サーバサイドスクリプトすることを認めるべきではないメッセージを送信する方が多い -eg.われていないため、それぞれ10分です。い利用できる セッション機構 サーバ側で保存した時に情報をユーザーからのメール.場合はユーザにメールで送られるべきものを保存する情報をセッションと区別する人々とのセッションから有効に人とのセッションを無効に使うブロックは後者からのメールを送信する場であります。

のセッションが実施されるべき(特定のコードによって異なる言語を使用するサーバー側のスクリプティングサポートに対するコミットメント、Python、JSPなど)。

他のヒント

誰かがあなたにこれを行うための知識を持っている場合は、私が言うと思います唯一のオプションは、あなたはおそらく、特定の要求の数(の等数を記録したり、維持することであるので、

は、あなたはおそらく、クライアント側で何もできませんリソース)と、要求を拒否(または特定のユーザーのために、「忙しい」のhttpコードなど)を送信します。

私は、最も簡単な方法は、(これは明らかに、このようなプロキシやNATなどの背後にある複数のユーザーなどの欠点を有している)特定のIPアドレスからの要求をカウントすることだと思います。

実際のソリューションは、サーバーサイドの言語とWebサーバーによって異なりますが、あなたはおそらくルールをフレームし、それがどのように動作するかを見ることができました。 IPアドレスごとの5分あたりの要求(またはあなたの使用に適しているものは何でも)ような何かます。

他の人が言ったように、

は、サーバー上の保護を実装する必要があります。クライアント側は、コーディングのない量は、保護を提供しません。

虐待のこのタイプに対してサーバーを保護するための一般的な方法は、rate limitingと呼ばれています。あなたが与えられたクライアントがメッセージを送信できるようにする頻度を決定し、あなたが外に収まる任意のメッセージを無視するようにサーバをコーディングリミットます。

たとえば、あなたは何の複数のメッセージ分を超えない二つのメッセージごとに10分を超えない4つのメッセージ時間を許可しないことを決めることができました。あなたは、あなたがそのアルゴリズムへのコードの合理的なようだと考えるものは何でも選んます。

あなたのサーバーでは、メッセージが(認証Cookieを経由して最も可能性が高い)から来たユーザーを識別できるようにする必要があるだろうし、データベースに、あなたは時に最後のメッセージを見つけることができるようする必要があると思いますそのユーザによって送信されました。あなたが唯一の最近の情報を維持する必要があり、あなたが唯一の再犯者のパフォーマンス最適化する必要があるためあなたも、リクエストごとにデータベース検索を避けるために、サーバー内のRAM内の情報は、(サーバーがどのように動作するかに依存する)ことをキャッシュすることができるかもしれません(そのため、あなたのサーバーを悪用しようとしているものとは最近)要求を送信します。

私は、誰もが律速について投稿されたものと一致します。

しかし、これは非常にサーバー側で実装するのに複雑になることがあります。あなたは、スケールアウトを開始する場合は特に。そして、正直に、1000件のメッセージが悪いことをあなたを傷つける場合 - 私の提案は、それ以上に、あなたに適用される場合があります。

は代わりに自分でこれを実装するので、あなたは、このようなこの超クールなWebサービスプロキシ<のhref = "http://apigee.com/about/products/として、あなたのためにそれを行うには、サードパーティのサービスに見てみたいことがあります企業/機能/制御-API-トラフィック保護 - あなたのビジネス」のrel = "nofollowをnoreferrer"> Apigee の

自分の特徴の一つは、具体的には、API率の調整です。

(リンクを参照してください)

ここに画像の説明を入力します

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top