PHPの脆弱性をきっかけに考える、WordPressの代替

WordPressを続けるか、静的サイトや管理付きCMSへ移るかを比較。CloudflareのWAF、お問い合わせフォーム、一般利用・企業利用の料金例を図解付きで説明します。

公開 更新
  • Cloudflare
  • WordPress
  • セキュリティ

WordPressの脆弱性への対応を経験すると、「この先も同じ仕組みで運営してよいのか」と気になる人もいると思います。移行先を探しても、専門用語が多く、何が変わるのか分かりにくいかもしれません。

この記事は、個人ブログや趣味のサイト、企業サイトを運営する人に向けて、WordPressを続ける方法と、別の仕組みに変える方法を整理します。Cloudflareを利用する場合の安全対策、お問い合わせフォーム、料金の目安も紹介します。

先に伝えたいこと

WordPressをやめることが、すべてのサイトの正解ではありません。「必要な機能」「更新する人」「保守を担当する人」を整理すると、合う方法が見えてきます。

本記事は公式資料に基づく比較と設計上の考察です。移行作業や攻撃の再現、費用削減の実測結果を紹介するものではありません。

今回の問題は、WordPressの土台となるPHPにある

WordPressは、記事を投稿・管理するためのソフトウェアです。その動作を支える仕組みの一つが、サーバー上で動くPHPです。

2026年10月には、PHPについて次の重大な脆弱性が公表されました。脆弱性とは、攻撃に悪用される可能性のあるソフトウェアなどの弱点です。

  • CVE-2026-109618:メモリ不足で処理が中断されたとき、不完全な内部データを後処理が扱ってしまう問題。
  • CVE-2026-109619:使い終わったメモリを指す内部情報が残り、後から来たリクエストの処理が古い情報を参照してしまう問題。

条件によって、外部の第三者がサーバー上で任意のコードを実行できる可能性があります。これはWordPress本体の不具合とは別の問題なので、WordPressやプラグインの更新に加えて、PHP側の修正状況も確認する必要があります。

修正が最初に提供されたバージョンは、PHP 8.2.35、8.3.36、8.4.27、8.5.12です。実際の対応はホスティング会社やOSの提供元の案内を確認してください。バージョン番号だけでなく、提供元による修正適用の有無を見る必要があります。

参考:IPA:今回のPHP脆弱性と対策 / PHP公式:OOM処理の問題 / PHP公式:古い内部状態が残る問題

移行より先に、現在のサイトへの対応を

まず利用サービスの対応状況を確認し、必要な修正を適用します。侵害が疑われる場合は、調査と復旧も必要です。別のサービスへ移すだけで、既存の侵害が解消したとは判断できません。

代替を探す前に、記事の書き方と必要な機能を整理する

私が比較の出発点にしたいのは、普段の更新方法です。スマートフォンから書きたいのか、パソコンでファイルを編集できるのか。コメントや会員登録、販売機能が必要なのか。それによって選択肢は変わります。

WordPressは閲覧時にPHPとデータベースを使ってページを作ります。静的サイトは公開前にページを作り、閲覧時には完成したファイルを配ります。編集作業はどちらにも必要です。
図1:公開ページの基本的な仕組みの比較。追加機能やキャッシュによって構成は変わります。

選択肢1:WordPressを続け、保守を見直す

現在の編集画面や機能が使いやすいなら、続ける選択肢があります。プラグインは、機能を追加する部品のことです。本体・プラグイン・テーマ・PHPの更新担当と、バックアップから戻す手順を決めます。

保守会社や管理付きのサービスに任せる場合も、「プラグインの問題や復旧まで対応するのか」など、任せられる範囲を確認します。

参考:WordPress公式の安全対策ガイド

選択肢2:管理付きのCMSやサイト制作サービスを使う

CMSは、ブラウザーなどから記事を作成・管理する仕組みです。管理付きのサービスなら、サーバーなどの保守を事業者に任せられる場合があります。任せる範囲はサービスごとに異なります。

編集画面、日本語での使いやすさ、必要な機能、料金に加え、記事と画像を書き出して別のサービスへ移れるかを確認します。ここでは特定のサービスを安全性の順位で並べることはしません。

選択肢3:静的サイトにする

静的サイトは、あらかじめ作ったページを配信する方式です。文章と画像を中心に公開するサイトでは候補になります。一方、投稿画面は別に用意する必要があります。

HTMLというページ用ファイルを直接編集する、原稿からページを生成するツールを使う、編集用のCMSを組み合わせる、といった方法があります。更新しやすさを補うほど、保守する仕組みが増える場合もあります。

Cloudflareは、そのままWordPressの代わりにはならない

Cloudflareにはページの配信や安全対策のサービスがありますが、PagesやWorkers Static Assetsを選ぶだけでWordPressのような投稿画面が付くわけではありません。「記事を書く仕組み」と「ページを配る場所」は別に考えます。

重視したいこと検討する方向
スマホやブラウザーで気軽に投稿したいWordPress継続、または編集画面の使いやすいCMS
複数人で編集・承認したい権限管理や承認機能のあるCMS
文章と画像が中心で、ファイル編集もできる静的HTML、またはページ生成ツール
会員・決済・購入履歴が必要専用サービスや動的処理を含めて検討

CloudflareのWAFで、攻撃を手前で減らす

Cloudflareには、不審な通信をサイトの手前で検査するWAF(ワフ)があります。受付の警備に近い役割で、既知の攻撃に似た通信を遮断したり、アクセス元や送信回数で制限したりできます。

通信をCloudflareのWAFで検査し、検知した攻撃を遮断します。通過した通信はサイトに届きます。検知できない攻撃もあるため、サイトのソフトウェア更新は別に必要です。
図2:WAFは入口の検査。PHPやWordPressの弱点を修正する作業を置き換えるものではありません。

Freeには一部の脅威に対応するルールがあり、Pro以上では、より広いマネージドルールを利用できます。マネージドルールとは、Cloudflareが用意・更新する判定ルールのことです。DDoS対策は、大量の通信でサイトを使えなくする攻撃への対策です。

今回のPHP脆弱性に対する保護ルールも公開されています。ただし設定による適用条件があり、既知の攻撃への対策です。「Cloudflareを使えばPHPの更新は不要」とは判断できません。

参考:WAFの機能比較 / 今回のPHP脆弱性へのWAF対策と条件

元のサーバーが別にある場合は、そのサーバーへ直接アクセスしてWAFを迂回できないようにする対策も必要です。静的サイトでも、公開アカウントの乗っ取り、外部サービスの問題、フォームへの迷惑送信などは別途考えます。

お問い合わせだけ、Cloudflareで処理する

「静的サイトでは問い合わせができない」というわけではありません。ページは静的なまま、問い合わせを受け付ける部分だけに処理を追加できます。

Workersは、フォーム受付などの小さなプログラムをCloudflare上で動かすサービスです。Turnstileはボットによる送信を減らすための仕組みで、Email Serviceは通知メールの送信などを担当します。

利用者がフォームを送信し、Workersが入力とTurnstileの結果を検証します。問題なければメール送信を依頼し、管理者の既存受信箱へ通知します。任意の問い合わせ者への自動返信には有料の送信機能を使います。
図3:提案する構成例。実装済み・到達確認済みのシステムを示したものではありません。

確認済みの管理者アドレスに通知するだけなら、メール送信は無料です。問い合わせ者へ自動返信するには、任意の宛先に送信できるEmail SendingとWorkers Paidを利用します。Email Sendingは情報確認時点でベータ提供です。

Email Routingは独自ドメイン宛のメールを既存の受信箱へ転送するサービスです。メールを読むための受信箱自体を提供するものではありません。また、フォームから管理者に通知することと、独自ドメイン宛メールを転送することは別の機能です。

問い合わせを失わないためには、送信失敗時の案内、再送の扱い、受信確認なども設計します。機密情報をフォームで求めすぎないこと、保存先・閲覧できる人・保管期間を決めることも大切です。既存のメールサービスがある場合は、受信先を決めるDNS設定を不用意に変更しないよう確認します。

TurnstileにはブラウザーのJavaScriptが必要です。無効時や送信に失敗した場合も連絡できるよう、別の連絡方法を案内します。サイト本文や目次は、フォームと切り離して通常のHTMLで読める構成にできます。

参考:Turnstileの検証方法 / Email Serviceの概要 / メール転送の設定

一般利用・企業利用の料金はどれくらい?

以下は1ドメインの静的サイトと、小規模な問い合わせフォームを想定した構成例です。CMSの投稿画面、会員・決済機能、添付ファイル保存、監視・再送用の追加サービスは含みません。WordPressを残す場合は、そのサーバー代なども別に必要です。

金額は2026年10月25日時点の米ドルです。税、為替、独自ドメインの取得・更新、受信箱、制作・保守の人件費は含めていません。「月額最低料金+含まれる利用量を超えた分」と考えてください。

一般利用:管理者への通知だけなら、無料枠で始める

個人ブログや趣味サイトなどで、問い合わせを自分の受信箱で確認できればよい場合です。自動返信は行わず、画面に送信結果を表示します。

用途使うもの月額目安
ページ配信Pages/Workers Static Assets$0
入口の安全対策WebサイトFreeプラン$0
ボット対策Turnstile Free$0
問い合わせ受付Workers Free$0(無料枠内)
管理者への通知確認済み宛先への送信$0
合計の目安$0(無料枠・制限内)

無料枠で足りるかはアクセス数だけでなく、処理時間や実装にもよります。管理者への通知メールが無料でも、受付プログラムの実行制限は別です。

企業利用:自動返信と有料WAFを追加する

問い合わせ者へ受付メールを返し、より広いWAFルールを利用する例です。企業だから必ずこのプランが必要、という意味ではありません。サイトの役割と停止時の影響に合わせて選びます。

用途使うもの月払いの目安
ページ配信Pages/Workers Static Assets$0
有料WAFなどWebサイトProプラン$25
ボット対策Turnstile Free$0
受付・自動返信Workers Paid+Email Sending最低$5
管理者への通知確認済み宛先への送信$0
合計の目安最低$30/月+超過利用分

Workers Paidでは、最低$5/月の基本料金に月3,000通のEmail Sending送信枠が含まれます。超過分は1,000通あたり$0.35です。確認済み管理者宛の送信は、この枠に含まれません。再送やほかの用途も送信枠を使うため、3,000件の問い合わせを確実に受け付けられる保証とは異なります。

年払いとBusinessを含めた比較

構成例月払いの基本料金Webサイトプランを年払いにした月額換算
一般利用:Free+Workers Free$0(無料枠内)$0(無料枠内)
自動返信を追加:Free+Workers Paid最低$5最低$5
企業利用例:Pro+Workers Paid最低$30最低$25相当
要件が厳しい場合:Business+Workers Paid最低$255最低$205相当

Proの年払いは$240/年、Businessの年払いは$2,400/年です。これにWorkersの最低$5/月と超過利用分が別途発生します。表の月額換算額を、そのまま毎月支払う契約ではありません。

BusinessにはWebサイトプランのSLA(稼働率に関する契約上の取り決め)がありますが、フォームの処理やメール到達を含む仕組み全体の保証ではありません。継続的な運用が重要なら、障害の検知、失敗時の復旧、ベータ機能の扱いも含めて評価します。

「月額$5」と「Pro」は別の料金

Workers Paidはプログラム実行などのプランです。Pro/BusinessはWebサイトのWAFなどのプランです。Workers Paidを契約しても、有料WAFが自動的に付くわけではありません。

静的ファイルへのリクエストは無料・回数無制限と案内されていますが、ファイル数・容量などの制限はあります。WAFは対象の独自ドメインなど適用経路への設定が前提で、別の公開URLからのアクセスにも注意が必要です。

移行前は、料金より先に「困らないか」を確かめる

移行後に毎回の更新が負担になってしまうと、サイトを続けにくくなります。まず少数の記事で、投稿から公開までを試すのがよいと考えています。

  • 更新:いつもの担当者が記事を書き、画像を入れ、公開できるか。
  • 既存ページ:以前のURLを維持できるか。変更するなら旧URLから案内・転送できるか。
  • 付属機能:コメント、検索、カテゴリー、RSS、フォームなどをどう引き継ぐか。
  • 復旧:間違った内容を公開したとき、前の状態へ戻せるか。
  • 持ち出し:記事と画像をバックアップし、将来ほかへ移せるか。
  • 管理:アカウントを複数人で管理できるか。多要素認証を設定できるか。

WordPressを継続し、保守の体制を整える方法もあります。管理付きサービスに任せる方法も、公開側を静的にする方法もあります。必要な機能と、更新・保守を続けられる範囲を確認して、自分のサイトに合う構成を選びたいと思います。

図版は本記事用に作成した説明図です。料金・提供条件は変更される場合があります。

開発ブログの記事一覧へ戻る