ユーザーが興味深いステータスメッセージを投稿できるDjango Webアプリケーション(nginx Webサーバー)があります。DjangoフォームでのPOST floodの防止
一部のユーザーは、スクリプトを使用してPOSTフラッドを実行しています。私はfail2ban
を実装しているので、これらはめったに2〜3秒より長く続くことはありません。しかし、私は人間以外のポストを止めることができる他の方法があるかどうかを知る必要があります。次のようにテキストがウェブサイトに突然現れると想像してみましょう。
6:07.371806+00 | | 0 | 2
2772081 | Hfd
| 8322 | 11880 | 2016-03-14 09:0
7:01.909866+00 | | 0 | 2
2772090 | ...
| 8322 | 11880 | 2016-03-14 09:0
7:11.392105+00 | | 0 | 2
2772110 | .....
| 8322 | 11880 | 2016-03-14 09:0
7:33.172462+00 | | 0 | 2
2772119 | Kokjhd
| 8322 | 11880 | 2016-03-14 09:0
7:43.189524+00 | | 0 | 2
2772128 | Hfs
| 8322 | 11880 | 2016-03-14 09:0
7:52.209139+00 | | 0 | 2
2772171 | Lloo
| 8322 | 11880 | 2016-03-14 09:0
8:34.195006+00 | | 0 | 2
2772178 | Kkjh
| 8322 | 11880 | 2016-03-14 09:0
8:42.976177+00 | | 0 | 2
2772211 | Kkkkkk
| 8322 | 11880 | 2016-03-14 09:0
9:17.003594+00 | | 0 | 2
2772230 | Kmkkkjhhf
| 8322 | 11880 | 2016-03-14 09:0
9:33.680043+00 | | 0 | 2
2772238 | Lkkk
私のフォームはかなりバニラです。例:
<form method="post" action="" enctype="multipart/form-data">
{% csrf_token %}
{{ form.description }}<br>
<input class="button" type="submit" value="OK">
</form>
私のコードでこのような動作を無効にする方法はありますか?私はハニーポットがスパムボットを守るために使用されていることを知っていますが、私のアプリを氾濫させるようなスクリプトの悪意のある人間のハンドラーはそれに該当しません。私はここに何か根本的なものがないかもしれないかも
フラッドの種類は、., .., ..., ...., ....., ......, .......
(つまり、繰り返しの文字で、サイドステップのマイロジックに変更があり、ユーザーが同じものを2回投稿することはできません)ということに注意してください。同じユーザーの以前のPOSTとコンテンツが95%の精度で一致するPOST要求を抑制する設定を行うことはできますか?これまでに聞いたことやそれを試したことがありますか?お知らせ下さい。
これは別のレイヤーですが、fail2banは別です。また、多くの場合、洪水は '。、..、...、....、.....、......、.......('すなわち、反復的であり、ユーザが同じことを2回ポストすることを許さないロジックをサイドステップに少し変更して)。同じユーザーの以前のPOSTとコンテンツが95%の精度で一致する場合、POSTリクエストを抑制する正規表現を設定できますか?これまでに聞いたことやそれを試したことがありますか? –
私はあなたの問題@HassanBaigを理解していますが、これに対する細い解決策はありません。 regexの動的な要求の内容を構築することを決定しない限り、正規表現はこの問題を解決できないことを理解していると思います。 – zEro
あなたの最善の策は、サーバー側の検証を実装して、過去1時間のうちの過去10回の投稿とのマッチングを最小限にすることです。もちろん、それとスロットル - ボットが100リクエスト/分(非常に異なっていますが無意味です)を送信しないようにしたいからです。 – zEro