ブログに戻る
基礎知識 公開:28.09.2026 1分で読めます

WordPress のお問い合わせフォーム:セキュリティチェックリスト

Contact Form 7、WPForms、Gravity Forms、Ninja Forms、Fluent Forms。どのプラグインかより、設定と保守が重要です。確認することと、更新のたびに再確認することを紹介します。

多くの WordPress サイトは、Contact Form 7、WPForms、Gravity Forms、Ninja Forms、Fluent Forms など、限られたフォームプラグインのいずれかを使っています。どれも安全に運用できますが、無防備にもなります。違いはプラグイン自体にあることは少なく、設定、周辺の追加機能、サーバーからのメールの送り方、到着後のメッセージの扱いにあります。

  • フォームプラグインとすべての追加機能を最新に保ち、使わなくなったものは削除します。
  • ハニーポット、CAPTCHA 連携、適している場合の Akismet など、プラグイン自身のスパム対策を有効にし、実際に機能することを確認します。
  • 自分のドメインのアドレスから、認証付き SMTP で通知を送ります。
  • アップロードを種類とサイズで制限し、アップロードしたファイルが公開一覧や閲覧の対象にならないようにします。
  • 受信先メールアドレスをページやソースコードに含めません。
  • 必要な入力内容だけを、必要な期間だけ保存します。
  • WordPress、テーマ、いずれかのプラグインを更新するたびに、短いチェックを行います。

更新:フォームプラグインとその周辺すべて

フォームプラグインは、インターネット上の誰からでも入力を受けるため、よく狙われます。セキュリティ修正は通常の更新として届くので、速やかに更新します。対象は本体だけではありません。決済、アップロード、CRM 連携、条件分岐、追加の CAPTCHA 提供者のための機能は、それぞれ独自の脆弱性を持つ別のコードです。テストのために入れて忘れたプラグインも同じです。無効化だけでは足りません。無効なプラグインもサーバーに残り、場合によってはファイルへ直接アクセスできます。使わないなら削除してください。

スパム対策:有効にし、動作を確認する

多くのフォームプラグインには独自のスパム対策や外部サービスとの連携があります。ボットは入力し、人には見えないハニーポット欄、reCAPTCHA、hCaptcha、Cloudflare Turnstile などの CAPTCHA、メッセージ内容をスパムデータベースと照合する Akismet などです。選択肢はプラグインや版によって異なるため、思い込まず設定を確認します。外部 CAPTCHA は第三者のスクリプトを読み込み、Akismet は送信内容を外部サービスへ送ります。どちらもプライバシーポリシーへの記載が必要で、構成によっては同意管理の対象にもなります。

よりよくある問題は、有効になっているのに機能しない保護です。公開テストキーで動く CAPTCHA は、すべてを通します。キャッシュや最適化のプラグイン、JavaScript エラーでスクリプトをブロックされたウィジェットは、何も止めません。隠すスタイルのないハニーポット欄は、スクリーンリーダーが読み上げ、本物の訪問者が入力します。そのため、変更後は必ずプライベートウィンドウでフォームを開き、ブラウザーコンソールとページのソースを調べ、テストメッセージを送ります。Google に依存しない対策が必要なら、無料の formexposed WordPress プラグインが、ハニーポット、時間チェック、プルーフ・オブ・ワークを追加し、プラグインの更新後にサイトを再チェックします。いくつかある選択肢の一つです。

メール:送信方法と行き先

標準では、WordPress はメールをサーバーの PHP mail 関数へ渡します。多くのホストでは認証が不十分で、迷惑メールになったり、静かに消えたりします。代わりに、ユーザー名とパスワードがある実際のメールボックスと、専用の forms@ アドレスなど自分のドメインの送信元を使い、SMTP プラグインやホストのメールサービスから送信します。ドメインの SPF、DKIM、DMARC レコードには、この送信元を含める必要があります。From 欄に訪問者のアドレスを入れてはいけません。自分のドメインではないため、DMARC の整合性を満たせず、訪問者のドメインのポリシーによって、迷惑メールになるか拒否されます。Reply-To に設定すれば、一回のクリックで返信できます。

受信先アドレスは、ページではなくプラグインの設定に置きます。お問い合わせページのソースを確認してください。フォームの隣の mailto リンクや、受信先アドレスを保持する隠し欄は、すべての収集ボットにアドレスを渡します。古いフォームや独自開発のフォームでは、もっと悪い場合もあります。サーバーが隠し受信先欄を信用すると、誰でも変更し、フォームを使って任意のアドレスへメールを送れてしまいます。

アップロードと保存した入力内容

ファイルのアップロードはフォームの機能の中で最もリスクが高いため、まず本当に必要かを考えます。必要なら、危険な種類をいくつか拒否する方式ではなく、PDF や一般的な画像形式など、実際に必要な種類だけを許可し、サイズも制限します。プラグインの保存先を確認してください。公開ディレクトリで一覧表示されてはならず、できれば推測可能なアドレスから到達できないようにします。対応後に削除するか、サーバーに保持せず添付ファイルとして送ります。

多くのフォームプラグインや追加機能は、スパムも含めて各送信を WordPress のデータベースに保存します。メール送信に失敗したときの有用な控えですが、個人データの山も増えていきます。GDPR の保存制限の原則(第 5 条 (1)(e))では、必要な期間を超えて保持すべきではありません。保存が必要か、どの欄を、どの期間保持するかを決め、自動削除設定があれば使い、なければ古い記録を定期的に削除します。データベースのバックアップにも同じデータが含まれます。

更新のたびに

  1. 1プライベートウィンドウでお問い合わせページを開きます。フォームとスパム対策の要素が正しく表示され、ブラウザーコンソールにエラーがないことを確認します。
  2. 2ページのソースを見ます。ハニーポット欄と CAPTCHA スクリプトが残り、受信先アドレスが含まれていないことを確認します。
  3. 3テストメッセージを送ります。迷惑メールではなく受信トレイに届き、ヘッダーで SPF、DKIM、DMARC の成功を確認します。
  4. 4受信先、送信元アドレス、許可するアップロードの種類とサイズ、入力内容の保存期間という、重要な設定を確認します。
  5. 5プライバシーポリシーへのリンクと同意の文言が、引き続きフォームに表示されることを確認します。
  6. 6最後に確実に動いた時点が分かるよう、日付と確認内容を記録します。

習慣にすれば時間はほとんどかからず、放っておくと何週間も気付かない静かな障害を捉えられます。外側から見るには、formexposed.com の無料チェックが、何も送信せずサイトの公開フォームのページを調べ、期待する保護が存在し、有効に設定されているかを示します。アカウントは不要です。