どうも! 吉田航基(@hiyoko_tabi)です。
今回は、Contact Form 7のスパム対策記事です!
最近、お問い合わせフォームから1日10件以上のメールが届くようになってしまったため、思い切ってスパム対策を実施してみました。
ネット上に転がっている情報に加え、独自の方法も含めて合計10個ご紹介します!
正解は「URLの日本語化」
結論として、一番有効だったのはURLの日本語化でした。
つまりcontact form 7を設置しているお問い合わせページのURLを、英語ではなく日本語で変更してしまうことです。
僕の場合「contact」から「mail」などに変えてみましたが、botで捕捉され次の日にはスパムが届いていました。
そのため、僕は一つの仮説を立てました。
スパムメールは日本語のものもありますが、それを送るためのBOTツール自体はほとんどが海外製のはずです。つまりBOTツールで抽出するURL一覧は、英語以外だと文字化けするのではないだろうか。
そのため、試しに自分のお問い合わせフォームのURLを日本語にしてみました。
これを実施した結果…なんとスパムが0になりました!
7月10日にURLを変更して以来、7月28日まで一件もきていません。(今までは一日5件程度は届いていました。)
その他、効果のあった方法
ここでは、僕が実施した中で効果のあった方法をご紹介します。
承諾確認チェックボックスを設置
まずはContact form 7に承諾確認チェックボックスを設置する方法です。
お問い合わせフォームの送信ボタンの前にあるボタンのことですね。僕はこちらのサイトを参考にして設置しました。
コンタクトフォームに、以下の一文を含めるだけなのでカンタンですよ!
[acceptance acceptance-573]上記の内容で送信します [/acceptance]
ただし効果自体は微妙で、スパムは5分の4程度になる程度のイメージです。
しかしスパム対策としてはカンタンに導入できること、お客様の送信ミスを防ぐ利便性などを考えて、僕は今でも設置しています。
contact form 7にタグを設置
Contact form 7に「タグ」と呼ばれるコードを設定しましょう。
実はContact form 7では、タグを設置することで相手が使っているipアドレスなどの情報がカンタンに取得できます。
僕の場合、タグは以下で設置しています。
—
送信日付:[_date] [_time]
IPアドレス:[_remote_ip]
ユーザーエージェント:[_user_agent]
特にIPアドレスは後述の除外キーワードで活用できるので、必ず取得しましょう。
除外キーワードを設定
個人的に二番目に有効だったのは、この除外キーワードの設定です。
「設定」>「ディスカッション」>「コメントブロックリスト」を活用しましょう。
ここに、今まできたスパムの「送信名」「IPアドレス」「メールアドレス」「その他特徴的なワード」のキーワードを入力していきましょう!
例えば僕は、taobotやyanbotなどの名前でメールが届いていたので、「bot」でキーワードを入力しています。
スパムが届くたびに、送信名、メールアドレス、IPアドレスなどをキーワードリストに突っ込んでいけば、スパムはみるみる弾かれるようになっていきます。
僕の場合、ほとんど特定の相手から届いていたため、この方法は非常に有効でした。
個人的にオススメしない方法
ここからは、試したが効果が低かった方法を備忘録としてまとめていきます。
英語のままURL変更
結論、URLを変更しても効果0でした。
いくらURLを変更しても捕捉するツールがあるらしく、2日も経てば元どおりメールが届くようになります。
僕も「contact」や「mailform」とかに変更してみましたが、すぐに捕捉されました。
そのため、先述の日本語を含めたURLに変えてしまえば、海外製のツールなどは通用しなくなると思われます(多分)
reCAPTCHA v2 v3の設置
「reCAPTCHA」については、デメリットが多く実装しませんでした。
このreCAPTCHAは、WordPress用のスパム防止システムとして超有名なので知っている方も多いと思います。2018年に登場した「v3」では、今までの見辛い画像選択も一切なくなり、非常に便利になりました。
こちらのサイトを参考に導入しました。
reCAPTCHAのデメリットは以下の通りです。
- 全ページにコードが走るため、サイトスピードが異常に落ちる
reCAPTCHAを実装すると、全ページに自動スパム防止機能用のコードが走ります。つまりサイト表示のたびコードを読み込むため、サイトスピードが一気に落ちるんです。
「PageSpeed Insights」というサイトで実際に計測した結果、84から61までスコアが落ちました。
- サイトの右下に、必ずロゴが表示されるようになる
reCAPTCHAを実装すると、全サイトの右下にロゴが表示されるようになります。これがめちゃくちゃ邪魔です。
しかもこのロゴを消すことはGoogle規約違反になります。とはいってもサイト内にGoogleから指定された文言を記述して、CSSへのソースコードの追記すればOKなのですが、素人には超むずいです。
つまり、スピードは落ちるはロゴが邪魔だわ、しかもそれらを消すにも詳しいCSSの知識が必要というめんどくささです。
以上の理由により、僕のサイトではreCAPTCHAは実装しませんでした。
Akismetプラグインの設置
Akismetも同様に、デメリットが大きすぎるのでパスしました。
今回のように除外キーワードやURL変更で対処できる範囲内なら、プラグインを使わないのも一つの手です。
Really Simple CAPTCHA プラグインの設置
こうなれば、スピードの落ちにくい画像表示プラグインに頼るしかない…!
そこで「Really Simple CAPTCHA」という文字画像プラグインを使ってみたのですが、結論としてはまさに効果0でした。
ちなみに僕が試した方法はこちらです。
もはや文字画像を表示したくらいでは、迷惑メールのbotは回避できないらしいんです。そんな凄い技術、もっと良い方向に使えば良いのに…。
この程度の技術では、よっぽど古いbot以外は変わらず送られてきます。そのため入れるだけ無駄です。
function.phpでの設定
プラグインでダメなら、直接コードで書き込むしかない。
そこでfunction.phpに直接コードを書き込んで、「ひらがな」が含まれていない英文メールを弾く方法を試す方法を調べてみました。
例えばこちらのサイトやこちらのサイトに記載されていますが「function.phpに貼り付けるだけ」が意外と難しいんです。
1文字ミスったら、ワードプレスが真っ白になって操作できなくなるのに、第三者が作ったコードなんて正直怖くて利用できません。
そもそも届くメールが半分くらい日本語なので、効果が薄いんです。
コード不要のスパム対策方法まとめ
以上、難しい手順0のスパム対策方法まとめでした。
この方法を活用して、スパムメールを撲滅しましょう!