web-dev-qa-db-ja.com

URLを含むフォーム送信を拒否する

Drupalを使用していて、メールの連絡フォームがあるクライアントがいます。問題は、フォームから毎日スパムが送信されていることです。

Re-captchaプラグイン、captchaプラグイン、Anti-spam(Askimat)、Honeypotプラグインを試しました。

犯罪者はキャプチャの問題を解決できるXRumerなどのプログラムを使用しており、これらのプラグインのいずれもボットを阻止できませんでした。

それで、私は他の人にこれらのコンタクトフォームのスパム投稿を止める方法について何かアドバイスがあるかどうか尋ねていますか?

この特定のフォームは本文セクションのURLに正当な理由があるべきではないので、フォームが送信されたときにURLを検出し、それらが存在する場合にエラーを返す可能性がありますか?

7
JasonDavis

Webform モジュールまたは Entityforms モジュールのいずれかを使用して、連絡先フォームを作成することが可能です。

後者の優れた点は、フィールドをアタッチし、それらのフィールドを Field Validation モジュールで検証できることです。これにより、幅広い検証オプションが提供されます。

Webformsで使用する Webform Validation モジュールがありますが、フィールド検証を使用したEntityformsは、もう少し柔軟で、おそらく使いやすいと思います。

必要に応じて、「<a href = "やその他の望ましくない単語やフレーズ(ブラックリストマッチング)、正規表現を使用した構成などのテキストをスキャンできます。

3
Triskelion

XRumerができることとできないことについてはよく知りませんが、考えられるすべての質問に対する答えがあったとしたら、驚きます。そのことを念頭に置いて、私は Captcha Riddler をお勧めします。

1
enzipher

カスタムコードを使用した非常に単純な代替案(私は個人的に、このような単純なタスクのために多数のモジュールをインストールすることは、大げさすぎると思います):

_function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
   if ($form_id == 'my_form_id') {
     $form['#validate'][] = 'MYMODULE_form_link_removal_validation';
   }
}

function MYMODULE_form_link_removal_validation($form, &$form_state) {
  // Basic regex for anchor tags
  $regex = '/<a[^>]*>/i';

  if (preg_match($regex, $form_state['values']['body_field'])) {
    form_set_error('body', t('Links are not allowed in this field.'));
  }
}
_

必要に応じてさらに適切なフィルターを実装し( hook_filter_info() を参照)、さらに 'ConvertリンクへのURLのフィルターがオンになっています。メカニズムは同じですが、文字列照合メソッドはそれに応じて置き換えるだけで済みます。

1
Clive

URLの確認についてはよくわかりませんが、お問い合わせフォーム- Spam Prevention にスパム防止について説明しているdrupal.orgのページがあります。まだ試していないいくつかのモジュールについて言及しています。

次のdrupal.orgページにも多数のスパム防止モジュールがあります- スパム防止drupal wikiページ

0
littledynamo

Webforms内のURL送信をブロックする である完全なモジュールコード(D6)を次に示します。 D7バージョンが必要な場合はお知らせください。

URLの送信をブロックしても、ボットは投稿しようとします!私はD6ベースのサイトを1つ持っており、世界中のすべてのスパマーが、URLの有無にかかわらず、あらゆる方法でスパムを送信しようとしています。

0
AgA