質問

私がマスターしている Web サイトにはフォーラムがあり、毎日大量のスパムが送られてきます。現在スパムを削除しIPブロックを行っております。しかし、これはあまりうまくいきません。ブロックされる IP のリストは急速に増加していますが、フォーラムへのスパム投稿の数も同様に増加しています。

フォーラムは完全に私自身のコードです。PHP と MySQL で構築されています。

スパムメールを阻止する具体的な方法にはどのようなものがあるのでしょうか?

編集言い忘れていたのですが、フォーラムは未登録ユーザーでも投稿できるように公開されている必要があります。ブログのコメントみたいな。

役に立ちましたか?

解決

私が作成したゲストブック アプリでは、スパムのほとんどを防ぐ 2 つの機能を実装しました。

  • セッション内の最初のリクエストとして POST を許可しない

  • 投稿時に有効な HTTP Refer(r)er が必要です

他のヒント

作品私が知っている一つの方法は、フォームを送信する前にJavaScriptを使用することです。たとえば、GETからPOSTにメソッドを変更します。 ;)スパムロボットは、JavaScriptを実行するにお粗末です。もちろん、これはまた、あなたがそれらを気にしている場合非Javascriptの人々があること...あなたのサイトを使用することができなくなることを意味します。 ;)(注:私はしないでください)

私の経験では、最も簡単な防御策は、単に「非標準」なことを行うことで得られます。サイトを非標準にすると、自動スパムをサイト専用にコード化する必要が生じますが、これは (悪気はありません) おそらく努力の価値はありません。スパムが人間のスパマーから送信されている場合、正規の投稿者を阻止する以外にできることは何もないことに注意してください。したがって、目標は、「標準的な」投稿をすべて破棄するソリューション、つまり「フォーム全体に記入して送信を押す」ソリューションを見つけることです。

試してみたいことの例をいくつか挙げます。

  • 「ウェブサイト」や「ホームページ」など、スパマーが入力したくなるような名前の非表示のフォーム フィールドを用意します。フォームフィールドが記入された場合は、メッセージを投稿せずに破棄してください。これは、目に見えないフィールドも含めてフォーム全体に自動的に記入するボットだったためです。
  • 「本物の」キャプチャを使用する必要はありませんが、「次の単語を逆から入力してください」のような単純なものでも使用できます。<ランダムな逆向きの単語>」または「この Web サイトのドメイン名は何ですか?」。人間にとっては簡単ですが、何を入力するかを理解するにはかなり複雑なボットが必要になります。

キャプチャを使用することもできます。次のような優れたスクリプトがあります。 PHPキャプチャ または、次のようなスパム制御サービスを使用します。 アキスメット, 、 彼らは持っています PHP API.

あなたは、いくつかの答えを持っているこの質問を、見たいかもしれませんそれはあなたが非侵入キャプチャを実装する方法について説明します。

考慮すべきもう一つは、大規模なスパムを防ぐために、ポスト間の時間を必要とすることです。

は常に "オレンジ" であるCAPTCHAを含めます。

スパムは、ボットや人間によるものであってもよい - ボットは、より多くの可能性があります。

ボットを停止するためには、JavaScriptによって移入隠しフィールドに入れて - 。あなたのサイトに合わせてカスタマイズされていない標準、愚かなボットはでそれを埋めるために失敗すること99.5%の可能性がある。

彼らは正確にそれを埋めるために失敗した場合は、

、彼らにはJavaScriptが必要ですメッセージか何かを与え、そしてそれらを(例えばキャプチャまたは登録に)いくつかの他の方法を掲示する機会を与えます。そのように(あなたの特定のサイトに合わせて調整されていない)(主に)まだ何の問題も投稿することができ、スパムロボット、そして最もスパムロボットではありません匿名ユーザーしません。

ちょうど偽陽性を生成しますブラックリストIPアドレスまたはサードパーティ製のブラックリストを使用して、気にしないでください。ほとんどすべてのボットは、(一部の)正当なユーザーと同じIPアドレスを使用します。

<時間>

もう一つのトリックはCSSで見ることが困難になるもっともらしい響きの名前、テキストフィールドに置くことである - 。何もして、このフィールドを埋める誰でもボットと考えられている。

高度なソリューション:

標準以外の形式で運試しをすることもできます。

  • CSS で非表示にした空のままにしておく必要があるフィールド
  • 誤解を招きやすい名前のフィールド。例: <input name=email> 何かのために ない Eメール。

私にとって CAPTCHA は、スパマーに屈してフォーラムに損害を与えるのと同じようなものです。ただし、スパムによる損害ではなく、ユーザビリティとアクセシビリティに損害が生じる点が異なります。

私が見つけた何かが驚くほど効果的であるために:あまりにも多くのURLが含まれているコメントを許可しない(より、たとえば、以下5)。それをやっているので、私はゼロコメントスパムを持っていた。

編集の上記を書いているので、私は唯一のリンクとの定期的なコメントスパムを持っていました。私は今、ここ数ヶ月のための称賛スパムを持っていなかったといくつかのハニーポットのフィールドを追加しました。

彼らは登録のメールアドレスに送信されたメールに返信するまで、誰でも記事を聞かせてはいけません。あなたは、フォーラムやメーリングリストの多くは、新規ユーザーの指定したメールアドレスに送信された一意の電子メールアドレスやWebのURLを生成し、それらがメールに返信またはその登録を完成させるためにリンクをクリックする必要が表示されます。

スパムは実際には経済の問題であるため、単一の答えはありません。誰かが自分の作品をウェブ上に公開することにどれだけの価値があるのか​​。ただし、かなり良いと思われる解決策がいくつかあります

私はあなたがSPAMersを防ぐために最も時間で、CAPTCHAが十分であることを言いたいです。 しかし、 http://www.captcha.net/ のように、強いものを使用します。

SPAMersが、彼らは多くのサイトに広告を掲載するためにツールを使用します(大量のトラフィックサイトを除く)特定のサイトに対処するために多くの時間を費やす必要はありませんことを覚えておいてください。だから、(例えばユーザーが画像を与える「= 1.5 + 2.4か」と言うと、ユーザーが答えるようにしましょう、これは:)スパムツールのほとんどをブロックします)、あなたのFORMは少し珍しい作る

(これまでのところ) 100% の一貫性でスパマーを阻止するために私が行った最も簡単な方法は、送信されたテキストを検証することです。PHP 関数 strstr() を使用して「a href」、あるいはクリックできない http や www をチェックすると、スパマーを別の場所に転送するだけで済みます。実際には、攻撃的な IP アドレスを拒否するスクリプトを .htaccess ファイルに書き込みます。他に懸念すべきスパムがあるかどうかはわかりませんが、これまでに確認したのはリンクだけです。

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