ワードプレス内に設置したお問い合わせフォーム(Contact Form 7)へ大量に届く海外スパムメールを賢く禁止にする方法

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

WPホームページ研究所運営サポートチーム監修のオムスビ(@OMUSUVIcom)です。

最近、ワードプレスの無料プラグイン「Contact Form 7」を狙ったスパムメールツールが流行っています。スパムメールが数十分おきに届くので詳しく調べてみると「マーケティングツール」として提供している企業を発見しました。翻訳しながら読み進めてみると「数千万個以上運用されているワードプレスサイトのお問い合わせフォームに直接アプローチできるツールを開発しました」との誘い文句。。。

そんなツールに「効果があるかどうか?」はご想像の通りですが信頼関係も構築していない状態でいくら効率的にフォームから営業活動をしても全部スルーされるのがオチです。どんなウェブサイトも人気になるとこのように「個人情報自動収集ツールのターゲットにされる」のは仕方ありませんが、私たち開発エンジニアはそういった迷惑行為をいち早く見つけ出して対策方法を考えるのも大切な任務だと考えています。

実際はイタチごっこでキリがありませんが対策は随時行う必要があります。Contact Form 7ではフォーム利用者に「自動返信メール」が送られるので、収集ツールのターゲットにされている間はずっと「メールを連続で送信してしまう」ため検索エンジン(Google)的には「頻繁にメール配信する迷惑サイト」に扱われる可能性が出てきます。たとえ誤判定とはいえ「メールを配信しつづけている状況」だからです。

仮に『スパムメールを配信し続けているドメイン』としてGoogle側に認識されると「その独自ドメインからGmailへのメール配信もできなくなる」場合があるので注意しましょう。解決策は、スパムメールの大半が概ね英語なので「お問い合わせ本文に2バイト文字(主に日本語)が含まれない場合はフォーム側でエラーメッセージを出す」という処理を行なう方法。下記を「functions.php」へ追記すればOKです。

//スパム対策(Contact Form7用)
function wpcf7_validate_anti_spam_message( $result, $tag ) {
	$value = str_replace(array(PHP_EOL,' '), '', esc_attr($_POST['your-message']));
	if (!empty($value)) {
		if (preg_match('/^[!-~]+$/', $value)) {
			$result['valid'] = false;
			$result['reason'] = array('your-message' => 'お問い合わせ内容は日本語で入力してください');
		}
	}
	return $result;
}
add_filter( 'wpcf7_validate', 'wpcf7_validate_anti_spam_message', 10, 2 );

もし「本文(your-message)」ではなく、「件名(your-subject)」に適用したい場合は下記のように置き換えればOKです。

//スパム対策(Contact Form7用)
function wpcf7_validate_anti_spam_message( $result, $tag ) {
	$value = str_replace(array(PHP_EOL,' '), '', esc_attr($_POST['your-subject']));
	if (!empty($value)) {
		if (preg_match('/^[!-~]+$/', $value)) {
			$result['valid'] = false;
			$result['reason'] = array('your-subject' => '件名は日本語で入力してください');
		}
	}
	return $result;
}
add_filter( 'wpcf7_validate', 'wpcf7_validate_anti_spam_message', 10, 2 );

また、Contact Form 7の設定状況で「your-message」や「your-subject」を使わずに「text-476」や「textarea-762」などでフォームを作っている場合は記述箇所を微調整しましょう。設定自体は難しくないですが導入はウェブサイトの運用状況を考慮しつつお試しください。

▼「your-subject」ではなく「text-476(値は環境による)」を使っている場合

//スパム対策(Contact Form7用)
function wpcf7_validate_anti_spam_message( $result, $tag ) {
	$value = str_replace(array(PHP_EOL,' '), '', esc_attr($_POST['text-476']));
	if (!empty($value)) {
		if (preg_match('/^[!-~]+$/', $value)) {
			$result['valid'] = false;
			$result['reason'] = array('text-476' => '日本語で入力してください');
		}
	}
	return $result;
}
add_filter( 'wpcf7_validate', 'wpcf7_validate_anti_spam_message', 10, 2 );

▼「your-message」ではなく「textarea-762(値は環境による)」を使っている場合

//スパム対策(Contact Form7用)
function wpcf7_validate_anti_spam_message( $result, $tag ) {
	$value = str_replace(array(PHP_EOL,' '), '', esc_attr($_POST['textarea-762']));
	if (!empty($value)) {
		if (preg_match('/^[!-~]+$/', $value)) {
			$result['valid'] = false;
			$result['reason'] = array('textarea-762' => '日本語で入力してください');
		}
	}
	return $result;
}
add_filter( 'wpcf7_validate', 'wpcf7_validate_anti_spam_message', 10, 2 );

さらにルールを厳しくする場合は下記でもOKです。以下はお問い合わせ本文内(textarea)に「ひらがな」が存在しない場合のお問い合わせをすべてはじくという処理となっています。お問い合わせフォームを使うのは日本語の入力ができる方のみとなりますが効果は抜群です。

//Contact Form 7の <textarea> にひらがなが含まれない場合はエラーを表示させる
function wpcf7_validation_textarea_hiragana_check($result, $tag) {
	$name = $tag['name'];
	$value = (isset($_POST[$name])) ? (string) $_POST[$name] : '';
	if ($value !== '' && !preg_match('/[ぁ-ん]/u', $value)) {
		$result['valid'] = false;
		$result['reason'] = array($name => 'この内容は送信できません。');
	}
	return $result;
}
add_filter('wpcf7_validate_textarea', 'wpcf7_validation_textarea_hiragana_check', 10, 2);
add_filter('wpcf7_validate_textarea*', 'wpcf7_validation_textarea_hiragana_check', 10, 2);

色々な書き方を記載しましたが1つずつ試して改善したものを採用するのがベスト。

時期によって流行のスパムツールも違いますが、狙われる環境は人それぞれです。お問い合わせフォームの動作範囲を日本語のみに絞ってもよければ最後に記述した「ひらがな」が存在しない場合は全部弾いてしまうのがもっとも手っ取り早いかもしれません。どれを採用するかはよく検証作業を繰り返して決定しましょう。

スパムメールが連続していてお困りだった場合はぜひ一度お試しくださいませ。

最新式の無料プラグインを事前公開

WordPressは公式サイトに登録済みのプラグインだけで全機能を補足しきれません。当サイトでは使いやすさを追求した魅惑的なプラグインを無料でダウンロードいただけます。運営ホームページのマーケティング力をさらに高めるチャンスです。まずは無料でDLしてお試しくださいませ。
改良されたプラグインを確認する

ワードプレス専門家に丸投げする

WPホームページ研究所はワードプレスを中心としたブログ作成・ホームページ制作・オウンドメディア構築・プラグイン設定・調整など幅広いカスタマイズに対応しております。 記事の掲載情報だけでなくお好みの機能をいただければ専属スタッフが心を込めて真摯に対応させていただきます。お気軽にお問い合わせください。

お問い合わせの種類をお選びください(もっとも近い項目)

法人の場合は法人名とご担当者のお名前をご入力ください

返信時のご連絡に利用するメールアドレスをご入力ください

運営中のウェブサイトURLがあればご入力ください

お困りの内容があれば詳しい内容をお聞かせください