NetFortロゴ
NetFortのお電話
春のキャンペーン開催HP作成3万円
実績記事一案サイトを良くするコツ
お問い合わせはコチラ

2025年06月08日

Contact Form 7をスパムから守る!reCAPTCHAだけに任せない方法論

情報アーカイブ
コンタクトフォーム7を守ってうれしそうな女性

スパム対策は、ホームページ運営でとても重要なお仕事になります。

緊急措置のレベルで言うと
  • レベル1:ホームページを作ったけどreCAPTCHAを付けていない。
  • レベル2:会社のメールにスパムと思われるメールがぽつぽつ来るようになった
  • レベル3:スパムメールが大量に届き明確に運営に影響が出ている。

この記事が必要な人

Contact Form 7で守りたい人
目次 【open】

Contact Form 7にreCAPTCHAを導入する方法

reCAPTCHAと言うのは皆様も見た事はあると思いますが、ホームページ右下にひっそりとある こういうものとなります。

HPのリキャプチャ

これがフォームページにひっそりとついてるのを見かけた事はないですか?


reCAPTCHAの概要と導入手順(v3)の簡単な流れ

reCAPTCHAとは Googleが提供するサービスで人間なのかBOT(プログラム)なのかを自動で判定し 場合によっては送れなくするシステムの事 スパムは確実に減りますが、特に大手、準大手の場合は無料枠だけでは足りなくなる場合もあります。

設置はとても簡単なので覚えてしまいましょう。

ワードプレスコンタクトフォーム7リキャプチャを設定する場所
  1. WPにログインして『お問い合わせ』をクリックをします。
  2. 項目『インテグレーション』をクリック
  3. 『reCAPTCHA』インテグレーションのセットアップ
  4. reCAPTCHAにアクセスをする googleリキャプチャにアクセス
  5. Get started(使ってみる)をクリックし次のページもGet started(使ってみる)をクリック
  6. ラベルを入れV3を選択します。
  7. ドメインを入れる
  8. 送信を押す
  9. サイトキーとシークレットキーをコピー
  10. ワードプレスに先ほどのセットアップのところに入れると完成

reCAPTCHAの限界とBOTの進化

実は既にreCAPTCHAのV3を破る方法は続々出始めています。

ソース情報
強化学習を用いたreCAPTCHA v3の突破

研究者たちは、強化学習(Reinforcement Learning)を用いてreCAPTCHA v3をバイパスする手法を提案しています。

情報ソースはコチラから確認してください

Googleの研究は続いているとは思うが、やはりBOTの進化についていけなくなる可能性もあります。
基本的にはreCAPTCHAを使って守り 追加でさらなる防御網を構築する方が無難かと思われます。


BOTの正体と挙動をPythonで見てみる

別に人間が張り付き悪戯をしているわけではありません。
海外の頭のよさそうな人が張り付いて脆弱性を探している姿も面白そうな絵ずらではありますが そうではなくプログラムが動いているだけ

狙いやすい脆弱性を持った、または持ってそうな部分を自動的に攻撃するようにプログラムされています。
AIが入っているものもありますが、それは稀 たいていの場合、脆弱な部分を入力されており、それに合致するサイトを探します。


BOTの正体と挙動をプログラムから学ぶ

どんなプログラムなのかPythonコードで見て見ましょう。
以下Pythonとなり、私のサイトに行きタイトルを取得するプログラム


import requests
from bs4 import BeautifulSoup

def get_page_title(url):
 headers = {
 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
 }
 response = requests.get(url, headers=headers, timeout=10)
 soup = BeautifulSoup(response.text, 'html.parser')
 title_tag = soup.find('title')
 return title_tag.text.strip() if title_tag else None

url = "https://fort-net.jp/"
print(get_page_title(url))

これは、HPに行きタイトルを取得するだけのごく簡単なプログラムとなります。


コレがBOTというもの。


ある程度行先を自由にすることもできますが、完璧に自由にさせるとどこへ飛んでいくか 制御できない為、先に狙う場所を指定していくのですね。
そうする事で効率性を上げるというわけです。


Contact Form 7のURLを変更して守る方法

さて、上記あるようにある程度『指定』されて攻撃しているという事が分かれば 後は簡単な逆算が可能。
要はURLを変えればいいよねってわけ。


『contact』というURLだけ変えても仕方ないので 中のURLをBOTが予測できないようにfunctions.phpで指定変更をするだけで 大幅に攻撃を減らすことができます。

REST API構造と脆弱性の理由

Contact Form 7は、送信処理をWordPressのREST API経由で行っています。

具体的には以下のようなURLに対してPOSTされます。


/wp-json/contact-form-7/v1/contact-forms/{form-id}/feedback

この構造は「誰でも知っている」「自動的に見つけられる」ものであり、 悪意ある人からすれば非常に都合のいい目印となっています。

つまり、フォームを設置した時点で『そこが攻撃対象になりやすい構造』なのです。


functions.phpで送信先を変更する

実際にやってみましょう。


// 表示されるフォームのaction URLをカスタマイズ例
add_filter('wpcf7_form_action_url', function($url) {
 return home_url('/hidden-contact-endpoint');
});
 

これで /wp-json/... の代わりに /hidden-contact-endpoint が表示される。
内部的には同じAPIにリダイレクトされるから、送信動作は壊れない。
※現時点での仕様に基づく。


「フォームURLを変更するだけ」でスパム送信が減ります。
面白いですね。
たったのこれだけで大抵のBOTを退けられるなんて不思議です

※これは事実ベースとして「多くのスパムBOTが既知URLを狙っている」ため、かなりの効果があります。 ただ、無敵ではなくただの『ズラし』と思っておきましょう。


スパム対策には強いが『指名攻撃』には無敵ではない

URLを変更するだけでスパムは大幅に減らせますが、 それでも「本気で狙われた場合」
特にランサムウェアのような攻撃には対応できません。

彼らはフォームの存在だけでなく、アップロードディレクトリやAPI、さらには管理画面までスキャンし、 侵入可能な脆弱性を見つけ出します。
URL変更は『見つかりにくくする』という意味では強力な手段ですが、 「完全な防御」ではないことも理解しておきましょう。


ランサム級の攻撃には要注意

ランサムウェアはお問い合わせフォームのみ改善すればいいものではなく、 メールを含むサーバー単位で丸ごと防御が必要になります。
流石にそこまで行くと「サイト制作」ではなく「セキュリティ設計」の領域です。

お問い合わせフォームは最も狙われやすい入口の一つに過ぎません。
そのため、フォームの保護に加えて以下のような対策も必要になります

  • アップロードディレクトリのPHP実行制限
  • ログイン画面やAPIへのアクセス制御
  • プラグインを通じた外部通信の監視
  • 定期的なバックアップの外部保存

簡易的なスパム対策では防げない、 『本気で狙われた攻撃』に対しては、総合的な視点で備える必要があるのです。


【まとめ】まずはできる範囲から始めよう

スパム対策やフォームの防御というと、難しいセキュリティの話だと感じてしまうかもしれません。
ですが、今回紹介したような「reCAPTCHAの設置」や「フォームURLの変更」は、 誰でも今日から実践できる現実的な対策です。

まずは自分のサイトが「どう見えているか」「どこが狙われやすいか」を意識し、 できるところから1つずつ強化していくことが、最も安全で、確実な道です。

「大切なのは守ることより、守る姿勢」。
今この瞬間から、フォーム防御の第一歩を踏み出してみてください。


わたしの身代わり画像

この記事を書いた人

  • 浜口さん(オジサン)
  • 生まれ:昭和だよ。
この文章は、システム要塞の仕様書を書くのに疲れた
いわゆる「おじさん」または「人カス」(笑)が自分の経験と体験を基に書かれた記事となります。 生成AIで自動で生成された記事ではない事をここに証明を致します。
こんな事を書かねばならないくだらない時代になった。という事なんでしょうね 気になる方は「AIチェッカー」などを使ってご確認してくださいませ。

URLをコピー