フォーラムをスパムから保護するにはどうすればよいですか?
-
20-08-2019 - |
質問
私がマスターしている Web サイトにはフォーラムがあり、毎日大量のスパムが送られてきます。現在スパムを削除しIPブロックを行っております。しかし、これはあまりうまくいきません。ブロックされる IP のリストは急速に増加していますが、フォーラムへのスパム投稿の数も同様に増加しています。
フォーラムは完全に私自身のコードです。PHP と MySQL で構築されています。
スパムメールを阻止する具体的な方法にはどのようなものがあるのでしょうか?
編集言い忘れていたのですが、フォーラムは未登録ユーザーでも投稿できるように公開されている必要があります。ブログのコメントみたいな。
解決
私が作成したゲストブック アプリでは、スパムのほとんどを防ぐ 2 つの機能を実装しました。
セッション内の最初のリクエストとして POST を許可しない
投稿時に有効な HTTP Refer(r)er が必要です
他のヒント
作品私が知っている一つの方法は、フォームを送信する前にJavaScriptを使用することです。たとえば、GETからPOSTにメソッドを変更します。 ;)スパムロボットは、JavaScriptを実行するにお粗末です。もちろん、これはまた、あなたがそれらを気にしている場合非Javascriptの人々があること...あなたのサイトを使用することができなくなることを意味します。 ;)(注:私はしないでください)
私の経験では、最も簡単な防御策は、単に「非標準」なことを行うことで得られます。サイトを非標準にすると、自動スパムをサイト専用にコード化する必要が生じますが、これは (悪気はありません) おそらく努力の価値はありません。スパムが人間のスパマーから送信されている場合、正規の投稿者を阻止する以外にできることは何もないことに注意してください。したがって、目標は、「標準的な」投稿をすべて破棄するソリューション、つまり「フォーム全体に記入して送信を押す」ソリューションを見つけることです。
試してみたいことの例をいくつか挙げます。
- 「ウェブサイト」や「ホームページ」など、スパマーが入力したくなるような名前の非表示のフォーム フィールドを用意します。フォームフィールドが記入された場合は、メッセージを投稿せずに破棄してください。これは、目に見えないフィールドも含めてフォーム全体に自動的に記入するボットだったためです。
- 「本物の」キャプチャを使用する必要はありませんが、「次の単語を逆から入力してください」のような単純なものでも使用できます。<ランダムな逆向きの単語>」または「この Web サイトのドメイン名は何ですか?」。人間にとっては簡単ですが、何を入力するかを理解するにはかなり複雑なボットが必要になります。
あなたは、いくつかの答えを持っているこの質問を、見たいかもしれませんそれはあなたが非侵入キャプチャを実装する方法について説明します。
考慮すべきもう一つは、大規模なスパムを防ぐために、ポスト間の時間を必要とすることです。
は常に "オレンジ" であるCAPTCHAを含めます。
スパムは、ボットや人間によるものであってもよい - ボットは、より多くの可能性があります。
。ボットを停止するためには、JavaScriptによって移入隠しフィールドに入れて - 。あなたのサイトに合わせてカスタマイズされていない標準、愚かなボットはでそれを埋めるために失敗すること99.5%の可能性がある。
彼らは正確にそれを埋めるために失敗した場合は、、彼らにはJavaScriptが必要ですメッセージか何かを与え、そしてそれらを(例えばキャプチャまたは登録に)いくつかの他の方法を掲示する機会を与えます。そのように(あなたの特定のサイトに合わせて調整されていない)(主に)まだ何の問題も投稿することができ、スパムロボット、そして最もスパムロボットではありません匿名ユーザーしません。
ちょうど偽陽性を生成しますブラックリストIPアドレスまたはサードパーティ製のブラックリストを使用して、気にしないでください。ほとんどすべてのボットは、(一部の)正当なユーザーと同じIPアドレスを使用します。
<時間>もう一つのトリックはCSSで見ることが困難になるもっともらしい響きの名前、テキストフィールドに置くことである - 。何もして、このフィールドを埋める誰でもボットと考えられている。
私が見つけた何かが驚くほど効果的であるために:あまりにも多くのURLが含まれているコメントを許可しない(より、たとえば、以下5)。それをやっているので、私はゼロコメントスパムを持っていた。
の編集の上記を書いているので、私は唯一のリンクとの定期的なコメントスパムを持っていました。私は今、ここ数ヶ月のための称賛スパムを持っていなかったといくつかのハニーポットのフィールドを追加しました。
彼らは登録のメールアドレスに送信されたメールに返信するまで、誰でも記事を聞かせてはいけません。あなたは、フォーラムやメーリングリストの多くは、新規ユーザーの指定したメールアドレスに送信された一意の電子メールアドレスやWebのURLを生成し、それらがメールに返信またはその登録を完成させるためにリンクをクリックする必要が表示されます。
Captcha は間違いなく最も簡単な方法です - ボット対策が必要な場合は KittenAuth を試してください (今回はパンダを使用しましたが)
スパムは実際には経済の問題であるため、単一の答えはありません。誰かが自分の作品をウェブ上に公開することにどれだけの価値があるのか。ただし、かなり良いと思われる解決策がいくつかあります
- 再キャプチャ
- 使用 目に見えないフィールドを作成するCCS ロボットが代役を務める
- ロボットが同じフォームを何度も使用できないように、フォームに時間固有の隠しフィールドを作成します。
私はあなたがSPAMersを防ぐために最も時間で、CAPTCHAが十分であることを言いたいです。 しかし、 http://www.captcha.net/ のように、強いものを使用します。
SPAMersが、彼らは多くのサイトに広告を掲載するためにツールを使用します(大量のトラフィックサイトを除く)特定のサイトに対処するために多くの時間を費やす必要はありませんことを覚えておいてください。だから、(例えばユーザーが画像を与える「= 1.5 + 2.4か」と言うと、ユーザーが答えるようにしましょう、これは:)スパムツールのほとんどをブロックします)、あなたのFORMは少し珍しい作る
(これまでのところ) 100% の一貫性でスパマーを阻止するために私が行った最も簡単な方法は、送信されたテキストを検証することです。PHP 関数 strstr() を使用して「a href」、あるいはクリックできない http や www をチェックすると、スパマーを別の場所に転送するだけで済みます。実際には、攻撃的な IP アドレスを拒否するスクリプトを .htaccess ファイルに書き込みます。他に懸念すべきスパムがあるかどうかはわかりませんが、これまでに確認したのはリンクだけです。