4

私はフラスコ/memcached を実行しており、自動化されたスクリプトがリクエストで私を非難したり、新しい投稿をあまりにも早く送信したりするのを防ぐための無駄のない効率的な方法を探しています。

セッション cookie に「last_action」時間を含めて、各リクエストに対してチェックすることを考えていましたが、設定した時間に関係なく、スクリプトを設定してその時間を遅らせることができました。

また、IP を取得して、x 時間内に IP からのリクエストが多すぎる場合は、それ以上拒否することも考えましたが、効率的に実行するには redis のようなものが必要になるため、料金を支払う必要はありません。 .

redis のようなものが価値があると証明できない限り、私は Cookie ベースのソリューションを好みます。

この種の状況に対処するための「業界標準」とは何ですか? コストとパフォーマンスのトレードオフが最も少ない方法はどれですか?

4

3 に答える 3

4

悪意のあるスクリプトは、Cookie を黙ってドロップするだけなので、Cookie を使用してこれを実現する方法はありません。ユーザーが最初にアクセスした場合 (つまり、Cookie が設定されていない場合) をサポートする必要があるため、クライアントに保存されている状態だけを考慮して、本物の新しいユーザーと悪意のあるスクリプトを区別する方法はありません。

目標を達成するには、サーバー側でユーザーを追跡する必要があります。これは、同じ IP による高速投稿を防止する IP ベースのフィルターと同じくらい簡単です。

于 2012-10-09T18:26:19.897 に答える
2

座って、アプリのシナリオにおける「コア」の問題が正確に何であるか、およびユーザーが誰になる可能性があるかを決定する必要があります。それは、適切な解決策を導き出すのに役立ちます。

私の経験では、この主題にはさまざまな問題と解決策がたくさんありますが、どれも「万能」ではありません。

  • 匿名ユーザーに問題がある場合は、「アカウント ウォール」の背後にある機能を可能な限り移行してみてください。
  • アカウント ウォールを使用できない場合は、IP ベースのトラッキングと他のヘッダー/JavaScript を使用したほうがよいでしょう。企業のプロキシ、ホーム ルーターなどのために、IP だけで行くと大惨事になる可能性があります。あまりにも多くの誤検知のリスクを冒すことになります。ブラウザ情報を追加すると、不快なユーザーはそれを偽造できますが、実際のユーザーにペナルティを課すことは少なくなります.
  • アカウント ウォールは、Cookie を強制する手段としてのみ機能させたい場合や、経験が特権を獲得するサイト アイデンティティを持つという考えにプラグインする場合があります。
  • 別の信頼できるサイトのアカウントにマップできるアカウントが必要になる場合があります。たとえば、私は通常、偽のアカウントを扱うのが得意な Facebook に対して拘束力のあるサード パーティのアカウントを信頼しています。Twitter を拘束するサードパーティのアカウントは信用できません。これは主にスパムです。
  • キャプチャを解決するためにサイトの「登録」が必要な場合や、最も不快な訪問を除外するのに少し不便な場合があります。ただし、悪い行動に対する報酬が十分に高い場合、何も解決しません。

これについては一日中話すことができました。私の見解では、最初にビジネス ロジックと UX の概念を解決する必要があります。その後で、技術的な解決策がはるかに簡単になります。

于 2012-10-09T18:45:42.243 に答える
0

私が以前に使用した非常に単純な方法は、CSS を使用して非表示になっている登録フォームに追加の入力を行うことです (つまり、display:none があります)。ほとんどのフォーム ボットはこのフィールドに入力しますが、人間は入力しません (表示されないため)。サーバー側のコードでは、入力が取り込まれた状態で POST を拒否することができます。

于 2012-12-22T14:14:10.410 に答える