-1

では、コメントを投稿できるフォームがあるとしましょう。ご存じのように、「悪い人」は PHP Curl の助けを借りて簡単に私にスパムを送ることができます。キャプチャを含まないものから Web サイトを保護するにはどうすればよいですか? ありがとうございました。

4

4 に答える 4

4

「ブラウザ以外のプログラムから Web サイトへのアクセスを防ぐにはどうすればよいか」ということであれば、答えはほとんど「できない」です。ブラウザは、HTTP リクエストを送信する単なるプログラムです。ブラウザからではないように見える HTTP リクエストを拒否しようとするゲームをプレイすることはできますが、任意のプログラム (curl、または Perl/Python/Ruby ライブラリを使用するもの) がヘッダーを模倣するのは簡単です。 「実際の」ブラウザが送信します。

于 2010-08-04T09:56:57.870 に答える
2

通常は、ランダムな値を生成してユーザーのセッションに保存します。フォームを出力するときに、この値を非表示の入力として追加します。

フォームが投稿されたら、投稿された値をセッションの値と比較します。すべての値を 1 回だけ使用します (フォームを出力する前に変更してください)。

これらのスパムボットは通常、Cookie を保存しません。つまり、投稿が実行されると、現在のセッションが存在せず、比較する値がないため、何かが起こっていることがわかります。たまたま Cookie を保存すると、投稿ごとに変更されるフォームに衝突し、最初の送信のみが成功します。毎回ページを再度読み込み、フォームも解析する場合、この方法は機能しません。しかし、これを防ぐ方法はないと思います。

当然、これは、サイトのすべての訪問者にセッションを割り当てる必要があることを意味します。これは、Cookie を保存することも意味します。それかキャプチャのどちらかで、他の方法はわかりません。

于 2010-08-04T10:00:15.400 に答える
1

有効なセッション ID を含むフォーム上に非表示のコントロールを配置する方法に沿って何かを試すことができます。このセッション ID は POST で検証され、成功した場合にのみ投稿が有効になります。

これは、javascript の有無にかかわらず機能します。ジム

于 2010-08-04T10:02:00.890 に答える
1

最も簡単な方法は、なんらかの形式のキャプチャ保護 (reCaptcha) を使用するか、コメントを投稿する前にユーザーにログインさせることです (これは実際にはスパムを防止するわけではありませんが、スパマーのアカウントをブロックすることで、スパマーに対してより簡単に対処できるようになります)。 .

それとは別に、いくつかの簡単な予防策を講じることもできます。特定の時間枠内で実行できるコメントの数を制限します。また、この制限を超えた場合にのみキャプチャを表示して、人間であると判断することもできます (SO のように)。

于 2010-08-04T10:03:31.650 に答える