PHP ウェブページの 1 つに phpforms.net を使用しています。また、BS フォームの送信でノンストップのスパムが発生しています。
彼らは明らかに、ボットよりもはるかに複雑なものを使用して、フォームに自動入力するだけで、maxlength html 要件とページ上のすべての javasript をバイパスできるためです。このAuto fill and submit forms on external site は、CURL を使用して POST を再送信する方法を示しています。
PHP ウェブページの 1 つに phpforms.net を使用しています。また、BS フォームの送信でノンストップのスパムが発生しています。
彼らは明らかに、ボットよりもはるかに複雑なものを使用して、フォームに自動入力するだけで、maxlength html 要件とページ上のすべての javasript をバイパスできるためです。このAuto fill and submit forms on external site は、CURL を使用して POST を再送信する方法を示しています。
私は最近、Captha を使用せずにスパムを防止するクラスを作成しました。それは3つのことをします。
ハニーポット:あるフィールドdisplay:none
。スパムボットはそれを見ることができ、それを埋めますが、正当なユーザーはそうしません. 何らかの値がある場合、フォームは無効です。
スピナー:type="hidden"
フォームをレンダリングする前にセッションで作成および保存され、入力にポストされるランダムな文字列。送信後に文字列が異なる場合、フォームは無効です。
ランダム フィールド名:各フィールド名のセッションに格納されたランダムな文字列 (フォーム リクエストごとに)
これをフォームに実装した後、1 日あたり 100 件以上のスパムがゼロになりました。
これらについての記事を読んだ記憶があるので、探してみます。
reCapthaがあなたを救います!:^) 見栄えがよく、そのコードは実装が非常に簡単です。
PHPFormsの機能によると、それらはreCATPCHAを提供します。これが実際にキャプチャが発明された理由です-スパムボットがhtmlフォームを悪用しているためです。
キャプチャの方法は、ボットが人間の介入なしにフォームを送信することを困難にすることです。別の方法は、送信されたテキスト自体を見てスパムを判別しようとするAkismetのような送信後のヒューリスティックプロセスです。
つまり、基本的には、キャプチャの有効性を主張してフォームの送信を少し難しくするか、スパムに対処するだけです。
これはあなたを助けるかもしれないし、助けないかもしれませんが、私は最近スパムの問題に遭遇しました. このソリューションを試したところ、スパムの問題が完全に解決されました。このメソッドで Captcha を使用する必要はありません。
フォームで、新しい入力フィールドを作成しdisplay: none
、CSS で非表示にします。このフィールドはスパム トラップです。実際のユーザーにはこのフィールドは表示されませんが、スパム ボットには表示されます。したがって、バックエンドでは、$_POST
この非表示フィールドのデータに何かが含まれている場合、送信はスパムであり、そのように処理できます。
詳しくはこちらをご覧ください。
特定の 1 つのボットだけを扱っている場合は、おそらくそのユーザー エージェントをブロックできます。
php を使用して一部の http ユーザー エージェントをブロックする方法の例
$badAgents = array('fooAgent','blahAgent', 'etcAgent');
if(in_array($_SERVER['HTTP_USER_AGENT'],$badAgents)) {
exit();
}
または、一般的なカールの場合:
if (strpos($_SERVER['HTTP_USER_AGENT'], 'curl') !== false)
exit;
多くの場合、作成者は自分のコードがサイトにスタックしていることに気付いていないため、実際には攻撃ではありません。何らかの悪意のあるアクティビティであることが判明した場合は、はい、キャプチャが必要になります.
サーバー側のコードを使用する場合の検証は、サーバー側で処理する必要があります。問題のクライアントが JavaScript とやり取りしない場合、JavaScript は何もしません。
キャプチャを使用する場合でも、サーバー側の検証は常にサーバー上の情報を検証する必要があります。reCaptcha 、mollom、akismetなど、キャプチャシステムまたはテキスト分析システムのいずれか、またはその両方を使用します。
私はいくつかのことをします。私は実際にreCaptchaを使用し、jQueryで非表示にする空白のテキストフィールドを持っています。これは、一部のボットが実際にCSSを読み取ることができ、display: noneが添付されていない場合はフィールドに入力しないためです。
いつものように、バックエンド処理も行う必要があります。今言った lameCaptcha フィールドの検証に加えて、フロント エンドに必要なフィールドがある場合は、trim() を使用して、実際に値があることを検証します。値がない場合は、実際にフォームを処理しないでください。