0

フォーム上のスパムに対抗する最善の方法を提案できる人はいますか?キャプチャは用意されていますが、スパムはまだ侵入しているようです.

次のことは可能ですか...フォームで、POSTリクエストがそのサイトから送信されたフォームからのものであるかどうかを確認します(同じアクションを使用するフォームではありません)。リクエストがサイトからのものである場合は、それ以外の場合は受け入れず、単にリクエストを無視してください。

また、DDOS スタイルの攻撃を止めるためにサーバー側で何かできることはありますか? 私たちのサイトへのスパマーは非常に短い時間で数千のリクエストを送信しているようです.

ユーザーをあまり妨げない、Codeigniter (v2) の他の優れたスパム対策方法を提案できる人はいますか? 前もって感謝します。

4

3 に答える 3

10

フォーム上のスパムに対抗する最善の方法を提案できる人はいますか?キャプチャは用意されていますが、スパムはまだ侵入しているようです.

「ハニーポット」テクニックが好きです。基本的に、フォームに空の値を持つ隠しフィールドを配置します。フォーム送信の一部としてフィールドを検証します。フィールドが != 空の場合 - ボットであるため、送信に失敗します。ボットは、フォームのすべてのフィールドに自動的に入力する傾向があります。

次のことは可能ですか...フォームで、POSTリクエストがそのサイトから送信されたフォームからのものであるかどうかを確認します(同じアクションを使用するフォームではありません)。リクエストがサイトからのものである場合は、それ以外の場合は受け入れず、単にリクエストを無視してください。

はい - CSRF と呼ばれます - Codeigniter が組み込まれています。設定ファイルで有効にし、フォームで form_open() を使用します。それでおしまい

また、DDOS スタイルの攻撃を止めるためにサーバー側で何かできることはありますか? 私たちのサイトへのスパマーは非常に短い時間で数千のリクエストを送信しているようです.

はい - 各ユーザーのセッションに「最終送信」フィールドを配置します。またはIP。または、スパマーを追跡したい場合。フォームを送信するたびに、最後の送信時間を確認し、それが X 秒 (X は快適な数値 - 5 秒) 未満である場合は、送信頻度が高すぎるためにフォームを失敗させます。

もう 1 つのオプションは、フォームがユーザーに「提供」されたときを記録し、リクエストから X 秒後に失敗することです (つまり、通常の人はフォームに入力するのに 30 秒かかります。つまり、2 秒はボットを意味します)。

ps 上記を使用すると、キャプチャを削除できることを意味します:)

于 2012-06-08T12:11:45.997 に答える
7

まあ、私は実際には非常に単純な解決策で多くの成功を収めてきました.

CSS クラスを作成します。

.magic /* Call it whatever you want
{
  display: none;
}

フォームに次のようなものを挿入します。

<form method="post" action="">
<p>
  <label>Name</label>
  <input type="text" name="name">
<p>
<!-- and the magic -->
<p class="magic">
  <input type="text" name="email"> <!-- spam bots LOVES 'email' fields ;) -->
</p>
<!-- /end magic -->

<p>
  <label>Real E-mail input field</label>
  <input type="text" name="some_email">
</p>
</form>

コントローラーでは、次のようなことができます。

...
public function create_post()
{
   $this->form_validation... // If you use form validation
   [...]
   // If all regular validations are true, do the last bit

  if( $this->input->post('email') == "" ) //If something is in the 'email' field, it has propbably been filled by a bot, because regular users can't see the field.
  {
    $this->your_model->insert_the_post($data);
  }
  // otherwise, pretend like nothing.

}

あなたのユーザーはこれを見ることはありません - そしてこれは私を数年間スパムから守ってきました. シンプルですが効果的です。

于 2012-06-08T12:22:27.090 に答える
0

最も可能性が高いのは、キャプチャに辞書またはいくつかの製品用語を配置したことです。私は、codeigniter で同じスパムの問題を抱えていました。次に、英数字などの強力な単語をいくつか入れます。そして、それは私のために働いているようです。試してみる。

于 2013-01-09T05:59:17.277 に答える