1

PHP ウェブページの 1 つに phpforms.net を使用しています。また、BS フォームの送信でノンストップのスパムが発生しています。

彼らは明らかに、ボットよりもはるかに複雑なものを使用して、フォームに自動入力するだけで、maxlength html 要件とページ上のすべての javasript をバイパスできるためです。このAuto fill and submit forms on external site は、CURL を使用して POST を再送信する方法を示しています。

4

7 に答える 7

2

私は最近、Captha を使用せずにスパムを防止するクラスを作成しました。それは3つのことをします。

ハニーポット:あるフィールドdisplay:none。スパムボットはそれを見ることができ、それを埋めますが、正当なユーザーはそうしません. 何らかの値がある場合、フォームは無効です。

スピナー:type="hidden"フォームをレンダリングする前にセッションで作成および保存され、入力にポストされるランダムな文字列。送信後に文字列が異なる場合、フォームは無効です。

ランダム フィールド名:各フィールド名のセッションに格納されたランダムな文字列 (フォーム リクエストごとに)

これをフォームに実装した後、1 日あたり 100 件以上のスパムがゼロになりました。

これらについての記事を読んだ記憶があるので、探してみます。

于 2013-03-19T19:57:07.790 に答える
2

reCapthaがあなたを救います!:^) 見栄えがよく、そのコードは実装が非常に簡単です。

于 2013-03-19T19:31:28.133 に答える
1

PHPFormsの機能によると、それらはreCATPCHAを提供します。これが実際にキャプチャが発明された理由です-スパムボットがhtmlフォームを悪用しているためです。

キャプチャの方法は、ボットが人間の介入なしにフォームを送信することを困難にすることです。別の方法は、送信されたテキスト自体を見てスパムを判別しようとするAkismetのような送信後のヒューリスティックプロセスです。

つまり、基本的には、キャプチャの有効性を主張してフォームの送信を少し難しくするか、スパムに対処するだけです。

于 2013-03-19T19:36:56.613 に答える
1

これはあなたを助けるかもしれないし、助けないかもしれませんが、私は最近スパムの問題に遭遇しました. このソリューションを試したところ、スパムの問題が完全に解決されました。このメソッドで Captcha を使用する必要はありません。

フォームで、新しい入力フィールドを作成しdisplay: none、CSS で非表示にします。このフィールドはスパム トラップです。実際のユーザーにはこのフィールドは表示されませんが、スパム ボットには表示されます。したがって、バックエンドでは、$_POSTこの非表示フィールドのデータに何かが含まれている場合、送信はスパムであり、そのように処理できます。

詳しくはこちらをご覧ください。

于 2013-03-19T19:43:26.860 に答える
0

特定の 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;

多くの場合、作成者は自分のコードがサイトにスタックしていることに気付いていないため、実際には攻撃ではありません。何らかの悪意のあるアクティビティであることが判明した場合は、はい、キャプチャが必要になります.

于 2013-03-19T19:40:36.710 に答える
0

サーバー側のコードを使用する場合の検証は、サーバー側で処理する必要があります。問題のクライアントが JavaScript とやり取りしない場合、JavaScript は何もしません。

キャプチャを使用する場合でも、サーバー側の検証は常にサーバー上の情報を検証する必要があります。reCaptcha 、mollomakismetなど、キャプチャシステムまたはテキスト分析システムのいずれか、またはその両方を使用します。

于 2013-03-19T19:41:52.867 に答える
0

私はいくつかのことをします。私は実際にreCaptchaを使用し、jQueryで非表示にする空白のテキストフィールドを持っています。これは、一部のボットが実際にCSSを読み取ることができ、display: noneが添付されていない場合はフィールドに入力しないためです。

いつものように、バックエンド処理も行う必要があります。今言った lameCaptcha フィールドの検証に加えて、フロント エンドに必要なフィールドがある場合は、trim() を使用して、実際に値があることを検証します。値がない場合は、実際にフォームを処理しないでください。

于 2013-03-19T19:51:19.607 に答える