MW WP Form で空メールが送信される現象とその対策
カテゴリー: WordPress
この記事は2019年9月15日に書かれたものです。情報が古い可能性がありますのでご注意ください。
WordPress のメールフォームプラグイン MW WP Form を利用しているサイトの一つで、下記のように各項目の内容が空のメールが送信される現象がありました。
お問い合わせフォームより送信されました。
------------------------------
お名前 :
メールアドレス :
お電話番号 :
お問い合わせ内容 :
------------------------------
メールに送信元の情報を記載するようにしているので、そのIPアドレスを調べてみたら、発信元はロシアで、いくつかのスパムレポート(ブラックリスト)に載っていました。
各項目は必須項目となっていますが、そのチェックに引っ掛からずに送信されてます。恐らく、スパムボットによって直接メールフォームプログラムにアクセスして送信されているものと思われますが、その内容が、不正サイトに誘導するわけでもなく、空なのでスパム行為の意図が不明です。
でも、頻繁に空メールが送られてくるのは鬱陶しいので、対策を施してみました。
調べてみると WordPress のフォーラムで、5年以上前に同じような質問があり、その中で MW WP Form の作者の方が解決方法を書かれていました。
MW WP Form の「必須」バリデーションは、値が送信されているときに発火するようになっています。そのため、name属性を書き換えられて送信されると「必須」バリデーションは実行されずメールが送信されてしまいます。
そこで、僕は「必須(チェックボックス)」の項目を1つ追加しました。
MW WP Formから必須の回答部分が空白のメールが届きます | WordPress.org
このバリデーションは値が送信されたかどうかではなく「存在するかどうか」を判定するバリデーションです。従って、name属性が書き換えられるとその項目の値は存在しないのでエラーになる、というわけです。
確かに、MW WP Form を使ってフォームを設置しているサイトがいくつかありますが、バリデーションルールに「必須(チェックボックス)」を設定している、チェックボックスやラジオボタンの項目があるフォームでは、このような空メールは一度も来ていません。
そこで、今回は確認画面を設けていないフォームでもあることから、入力内容の確認を即す目的を兼ねて、「内容をご確認のうえ、こちらにチェックを入れてください。」という項目のチェックボックスを追加し、バリデーションルールに「必須(チェックボックス)」を設定しました。
なお、先のフォーラムによると、
「必須(チェックボックス)」となっていますが、チェックボックス以外にも使用できます(基本的にチェックボックス用という意味です)。なので、普通にお名前などのフィールドに「必須(チェックボックス)」を設定されてください。
とのことですので、既存のテキストフィールドに「必須(チェックボックス)」を設定するだけでもいいようです。そうなると、「必須」と「必須(チェックボックス)」を使い分ける必要はなく、すべて「必須(チェックボックス)」でいいような気もしますが…。