WordPressで問い合わせフォームを設置するときに、よく使われているContact Form 7。
しかし、Contact Form 7を使うとき同時に考えないといけないのがスパムメール対策です。
この記事では、Contact Form 7の「クイズ」「チェックボックス」「海外メール拒否」「禁止ワード」を使ったスパム対策方法を、徹底解説します。
Contact Form 7の初期設定方法はこちらの記事をご参照ください。
WordPressでのスパムコメントやスパムメール対策をしては、以下のような方法が有効です。
- プラグイン「Akismet」を入れる
- Google「reCAPTCHA」を導入する( 効果大 )
- Contact Form 7にチェックボックスを入れる( この記事 )
- Contact Form 7にクイズを入れる( この記事 )
- Contact Form 7の本文にひらがなが含まれていないと、メッセージ送信できない( この記事 )
- 禁止ワードを登録する( この記事 )
Contact Form 7「クイズ」を使ったスパム対策
Contact Form 7の「クイズ」は、問い合わせ者へクイズを出し、正しい答えが入力されている場合のみ送信を行う機能です。
クイズの答えが間違っていると、送信エラーになります。
このクイズは難しくする必要はありません。簡単な問題でもロボットでは解けませんので効果はあります。
クイズフォームを作成する
管理画面>コンタクトフォーム or 新規作成 よりコンタクトフォームの編集画面を開きます。
メッセージ本文タグHTMLの下にカーソルを置いた状態で、上部のフォームタグの中から「クイズ」をクリックします。
「クイズと回答」の枠に、表示させるクイズを入力します。
入力方法は、問題と回答の間に『|』の記号を半角で入力します。
クイズ記入例
- 次の都市名を漢字で入力してください とうきょう|東京
- 春の次の季節は?|夏
- 次の計算の答えを入力してください 1×5=|5
クイズは複数設定が可能です。複数のクイズを用意したほうがより強固なセキュリティが期待できます。
複数クイズを入力た場合は、問い合わせフォームにはどれか一つだけランダムに出題されます。
複数のクイズを記入する場合は、クイズと回答ごとに改行をしてください。
クイズと回答を入力しましたら、下の「タグを挿入」をクリックします。
そうすると画面が戻り、クイズのタグが、カーソルを置いた場所に挿入されます。
「保存」しました後、問い合わせページを表示させると、クイズが表記されます。
クイズのサンプル
お好きなものがありましたら、コピペでお使いください。
- アメリカの首都は?(カタカナで)|ニューヨーク
- 日本で一番高い山を漢字で|富士山
- 11+1は?|12
- 花の「バラ」は漢字で?|薔薇
- 縄文時代の後の時代は?漢字で答えてください。|弥生時代
- 「犬」を英語で入力してください(小文字)|dog
Contact Form 7「チェックボックス」を設置してのスパム対策
問い合わせ内容を送信する前に、承諾確認のチェックボックスを設置することも、スパム対策の一つです。
チェックボックスにチェックを入れなければ、送信ができません。
今では、Pyppeteerのようなチェックボックスも自動で入力できるスクレイピングもあるのでロボットスパム回避の効果期待は薄いですがが、チェックボックス設定は簡単ですので、一応設置しています。
先ほど設置したクイズタグHTMLの下にカーソルを置いた状態で、上部のフォームタグの中から「承諾確認」をクリックします。
「同意条件」は、チェックボックスの横に表示される文字列です。
任意の文字を入力してください。
管理人の場合、『上記の内容で送信します。』で設定しています。
同意条件記入例
- この内容で送信します。
- 利用規約に同意します。
- 内容を確認の上、チェックをお願いします。
「チェックボックスを任意選択にする」は、必ずチェックを外してください。
ここを外すことで、送信できない仕組みになります。
編集が完了後、下の「タグを挿入」をクリックします。
そうすると画面が戻り、チェックボックスのタグが、カーソルを置いた場所に挿入されます。
「保存」しました後、問い合わせページを表示させると、チェックボックスが表記されます。
Contact Form 7 「海外スパム対策」
問い合わせフォームからくるスパムメールは、海外から送られてくるものが多いです。
英語のみならず、中国語、ロシア語、アラビア語…日本人に向けたサイトでしたら、外国語のメールはすべてシャットアウトしても問題ありません。
問い合わせ本文にひらがなが無い場合、エラーで送信できないようにします。
管理画面>外観>テーマファイルエディター
子テーマのfunctions.phpの一番下に、以下のCSSコードを貼り付けてください。
貼り付けましたら、下にある「ファイルを更新」をクリックしてください。
/**
*メールフォームにひらがなが無ければ送信できない(contact form7)
*/
add_filter('wpcf7_validate_textarea', 'wpcf7_validation_textarea_hiragana', 10, 2);
add_filter('wpcf7_validate_textarea*', 'wpcf7_validation_textarea_hiragana', 10, 2);
function wpcf7_validation_textarea_hiragana($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;
}
上記CSSは、キタムラさんのサイトより、頂戴しました。
送信されないときに問い合わせフォームに表示される「エラー / この内容は送信できません。」の部分は、任意の言葉に変更できます。
それ以外は、変更しないでください。
ちなみに、このエラーメッセージに「ひらがながないと送信できません」などと理由を正直に表示させる必要はありません。
むしろ理由は伏せておきましょう。
確認のため、問い合わせフォーム本文に全文英語を入れて送信ボタンを押してみると、以下画像のようにエラー表示され、送信できなくなります。
ちなみに、この送信エラーの表示はひらがなが含まれていないとき以外でも、問い合わせ本文に入力された内容が原因でメッセージ送信をブロックしされたときに表示されます。
次の章でご紹介する「禁止ワード」で登録した単語を用いて送信しようとしたときも、このエラーメッセージは表示されますので、ご留意ください。
禁止ワードの登録をする
これまで紹介した設定は、botによるフォーム攻撃を防ぐこと有効となります。
(botとは自動的に任意の文字や文章を送るプログラムのことです。)
しかしながら、人間が手動で送ってくる場合は通用しません。
うっとうしい営業のみならず、中傷内容が送られてくることもあります。こいつらどんだけ暇やねん、という感じですよね。
手動での不正攻撃を防ぐために禁止ワードを設定して、フォーム欄に記述があった場合はスパム扱いして送信できなくする、という方法があります。
禁止ワードの登録は、WordPress に初めから搭載されている機能です。
この設定をすると設定した禁止ワードを使ったコメントを弾いてくれるのですがそれだけでなく、なんと Contact Form7 にも自動で適用されるのです。
つまりは禁止ワードをうまく指定することで、問い合わせフォームからの迷惑営業メールなんかも減らすことができるのです。
管理画面>設定>ディスカッション
「コメント内で許可されていないキーワード」という項目にて、禁止ワードを設定していきます。
枠内に禁止ワードを入力していきます。ワードを1個ずつ改行して入力していきましょう。
禁止ワード例
- 配信停止
- 仮想通貨
- 補助金
- 稼げる
- エロ
- 死
- 殺
- あんた
特定の単語のみではなく、URLやメールアドレスなども設定ができます。
入力が完了しましたら、一番下の「変更を保存」をクリックしてください。
確認のため、問い合わせフォーム本文に設定した禁止ワードを入力し送信ボタンを押してみると、以下画像のようにエラー表示され、送信できなくなります。
この時に表示されるメッセージ内容(オレンジの枠)は、Contact Form7で設定できます。
管理画面>コンタクトフォーム>メッセージ
この中の「入力内容に不備が見つかった」の項目に設定した内容が表示されます。編集したい場合は、こちらを変更してください。
まとめ
快適なブログライフを送りたいのに、それを邪魔してくる輩の対策は、早々に行っていきましょう。
スパム対策まとめ
- プラグイン「Akismet」を入れる
- Google「reCAPTCHA」を導入する( 効果大 )
reCAPTCHA v3の導入
reCAPTCHA v2の導入 - Contact Form 7にチェックボックスを入れる
- Contact Form 7にクイズを入れる
- Contact Form 7の本文にひらがなが含まれていないと、メッセージ送信できない
- 禁止ワードを登録する
このサイトはアフィンガーを使用しています
WING(AFFINGER6 ver)
デザイン簡単、SEO対策と広告収入UPの機能が標準装備。さらに美しく、パワフルに。「稼ぐ」に特化したテーマ。
2022年最新!おすすめレンタルサーバー
月額料金がライトプランで220円〜(税込)なので、コスパよく爆速なサイト運営が可能に!
管理画面は使いやすくなっているので、これからはじめてサイト運営をする方にもおすすめです!
\ Twitterでも口コミ良好! /