サポート » プラグイン » Contact Form 7からのスパムメール

  • 解決済 toshi

    (@leafletweb)


    WordPressサイトを20サイト以上管理しております。
    最近完成したサイト1サイトのみContact Form 7からのスパムメールが数分おきに届きます。Advanced Google reCAPTCHAをインストールしても同じです。何か対策は無いものでしょうか?
    宜しくお願い致します。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • こんにちは。

    「Akismet によるスパムフィルタリング」という方法があります。
    https://contactform7.com/ja/spam-filtering-with-akismet/

    一度ご確認いただけましたら幸いです。

    トピック投稿者 toshi

    (@leafletweb)

    ありがとうございます。
    書かないでしまいましたがAkismetもやってみてはいたのですがダメで無効化している状態でした。
    先ほどもう一度有効化してみましたがやはりメールが届きます。
    一応フォームから届くメールアドレスを変更しても見ましたが同じでした。

    トピック投稿者 toshi

    (@leafletweb)

    追記です。
    一度Contact Form 7を削除してインストールしなおしても同じ状態です。
    他のメールフォームを使っていようかと思ったのですが
    どれがいいか決めかねております。

    ここはWordPressのフォーラムなので、CF7で他に対策がないか考えてみました。
    以下のプラグインを追加し、特定のメールアドレスやドメインやキーワードで受信を簡単に拒否(ブロック)できるようです。

    ■Spam Protect for Contact Form 7
    https://ja.wordpress.org/plugins/wp-contact-form-7-spam-blocker/

    こちらもお確かめいただけますと幸いです。
    他のメールフォームを使うというのももちろん選択肢の一つだと思います。サイト全体のデザインを損ねたくない場合には、iframeで固定ページや投稿ページに埋め込め可能なサービスをお探しになると良いかもしれません。

    ご参考になれば幸いです。

    leafletwebさん、こんにちは。

    reCAPTCHA v3 は Contact Form 7 単体でもデフォルトで実装されています。実装の機能を使ってみるのもひとつです。

    ちなみに reCAPTCHA v3 を導入してもスパムは届きます。おそらくですが、フォームに自動入力しているような感じではなく、フォームの送信機能部分へ直接データを送り込んでいるのではないかと思われます(推測)。

    ご自身で多少のカスタマイズが可能であれば送られてくるスパムの内容に対して一定の制限を追加することは可能です。例えば私の場合「会社名」欄に google として海外からのスパムが多く届いていたので会社名に google が使えないようにフィルターしました。

    // contactform 7 追加フィルターを実装
    add_filter( 'wpcf7_validate_text*', 'custom_name_validation_filter', 20, 2 );
    function custom_name_validation_filter( $result, $tag ) {
    	// お問い合わせフォームの会社名に関する処理
    	if ( 'your-company' == $tag->name ) {
    		$your_company = isset( $_POST['your-company'] ) ? trim( $_POST['your-company'] ) : '';
    
    		// 会社名が「google」だったらエラーを返す
    		if( $your_company == 'google' ) {
    			$result->invalidate( $tag, "Please enter the company name correctly." );
    		}
    		// スパム業者の名前を拒否
    		if( $your_company == 'Eric Jones' ) {
    			$result->invalidate( $tag, "Please enter the company name correctly." );
    		}
    		// 送信者にURLが含まれていたら拒否
    		$pattern = '/https?:\/{2}/';
    		if( preg_match( $pattern, $your_company ) ) {
    			$result->invalidate( $tag, "Please enter the company name correctly." );
    		}
    	}
    	if( 'your-name' == $tag->name ) {
    		$your_name = isset( $_POST['your-name'] ) ? trim( $_POST['your-name'] ) : '';
    
    		// 送信者にURLが含まれていたら拒否
    		$pattern = '/https?:\/{2}/';
    		if( preg_match( $pattern, $your_name ) ) {
    			$result->invalidate( $tag, "Please enter the company name correctly." );
    		}
    	}
    
    	return $result;
    }

    これはあくまでも例ですが、フォームの設定内容に合わせてフィルターを追加することで送信機能への直接送信だったとしても PHP 側で処理しているためはじくことができます。

    プラグインで同様のことが実行できるのであれば Yukinobu Asakawa さんの案内してくれているプラグインでの実装が圧倒的に楽ですので、ご自身でできない実装は無理されないようお勧めいたします。

    ご参考になれば。

    トピック投稿者 toshi

    (@leafletweb)

    Yukinobu Asakawa様
    Spam Protect for Contact Form 7を試したところ今現在約60分経過して今のところスパムメールは届いていません。

    shokun0803様
    ありがとうございます。
    とりあえず上記の通りYukinobu Asakawa様のSpam Protect for Contact Form 7にて条件入力する方法をやってみました。
    まだ駄目な場合試してみたいと思います。

    ご確認ありがとうございます。
    もしこの問題が解決された場合には、トピックを解決済みにしてクローズしていただけますと助かります。
    他の方が同様の現象に遭遇した時に解決済みのトピックが参考になるためです。

    トピック投稿者 toshi

    (@leafletweb)

    おはようございます。
    あれからは1通もスパムメールが届いておりません。
    お二方ともありがとうございました。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • トピック「Contact Form 7からのスパムメール」には新たに返信することはできません。