WordPress を静的 HTML に切り替えました ― 見た目はそのまま、PHP を外に見せない構成へ

PHP に重大な脆弱性が見つかったことをきっかけに、以前から考えていた WordPress からの切り替えを前倒しし、当社のホームページを静的な HTML にしました。ページの見た目も URL もお問い合わせフォームも、これまでと同じです。変わったのは、外部から PHP に届く道がなくなったこと、そしてページを AI と相談しながら直せるようになったことです。

何が起きたのか

2026年10月21日、Web サイトで広く使われている PHP に、外部から任意のプログラムを実行される恐れのある重大な脆弱性が公表されました。当社はその日のうちに、PHP を使う Web サービスを順次止め、ホームページもメンテナンス表示に切り替えました。

多くのサーバでは、翌日までに修正版が配布され、適用して再開できました。ホームページについては、修正版を当てて WordPress に戻すのではなく、以前から考えていた「WordPress をやめる」切り替えを、この機会に前倒しすることにしました。

なぜ WordPress をやめるのか

WordPress は手軽にサイトを作れる優れた道具です。ただ、当社の使い方には合わなくなっていました。理由は四つあります。

書きたいものをそのまま載せにくい

作った HTML をそのまま貼り付けることができず、WordPress 独自の編集画面の使い方を覚える必要があります。

攻撃の的になりやすい

世界中で使われているぶん、ログイン画面やプラグインの弱点を探す機械的な攻撃が毎日のように届きます。本体やプラグインの更新にも追われます。

AI に頼めば言葉で直せる

ページが HTML なら、「この段落を短く」「表を一つ足して」と言葉で頼むだけで、思ったとおりに直せます。

公開するための情報だから

会社や製品を知っていただくためのサイトです。業務システムと違い、内容を AI のクラウドサービスに渡すことへの心配は小さくて済みます。

そのうえ、当社のホームページは、お知らせや製品紹介が中心で、訪問者ごとに内容が変わるページはほとんどありません。ページをあらかじめ HTML にしておけば、PHP は要らないはずです。動きが必要なのはお問い合わせフォームだけでした。

切り替え前と切り替え後の構成 切り替え前は訪問者の要求がすべて PHP と WordPress を通っていた。切り替え後は HTML をそのまま返し、お問い合わせの送信だけを小さな受け口が受けてメールにする。 切り替え前 訪問者 PHP + WordPress ページを毎回組み立てる データベース 外部からの要求がすべて PHP に届く 切り替え後 訪問者 書き出した HTML お問い合わせの受け口 送信だけを受ける小さなプログラム 担当者へメール
切り替え前は、すべての要求が PHP を通っていました。切り替え後に PHP が受けるものは何もありません。

やったこと

1. WordPress に、自分自身のページを書き出させる

WordPress を、サーバの内側からしか接続できない形で一時的に起動しました。そのうえで、トップページからリンクをたどって全ページを保存しました。外部からは接続できないので、作業中も脆弱性の影響は受けません。

WordPress が自分で作った HTML をそのまま保存するので、テーマのデザイン、メニュー、記事の並び、サイトマップまで、見た目はこれまでと同じです。約80ページを、それぞれ同じ URL で公開し直しました。WordPress が行っていた転送(古い URL から新しい URL へ)も、Web サーバの設定で再現しています。

2. PHP には一切届かないようにする

Web サーバの設定で、.php で終わる要求をすべて拒否しました。PHP を止めただけでは、.php のファイルが「プログラムの中身のまま」表示されてしまう恐れがあります。表示もさせないことが大切です。管理画面やデータベースの控えなど、外に見せる必要のない場所もまとめて閉じました。

3. お問い合わせフォームは、外部サービスを使わずに動かす

フォームを外部サービスに任せれば手軽です。ただ、お客様の名前やメールアドレスが社外に保存されることになります。そこで、送信を受け取ってメールにするだけの小さなプログラムを自社で書きました。標準の機能だけで作り、追加のソフトウェアは入れていません。

  • 画面はこれまでのフォームの部品をそのまま使っているので、入力欄も、エラーの出方も、送信後のメッセージも同じです。
  • 問い合わせの内容はメールで担当者に送るだけで、サーバには残しません。
  • ファイルの添付は受け付けません。今回の脆弱性は、添付ファイル付きの送信を解析する部分にありました。
  • メールの配送が遅れたり失敗したりしたら、管理者に知らせが届きます。以前は、失敗に誰も気づけない仕組みでした。

4. 迷惑送信対策も、社内だけで判定する

以前は外部の判定サービスを使っていました。今回は、判定をすべて自社のサーバの中で行う三つの仕組みに置き換えました。

仕組み何を防ぐか
人には見えない入力欄すべての欄を自動で埋めてしまうプログラム
ページ表示時に渡す、署名付きの整理券ページを開かずに送信先へ直接送りつけるプログラム、開いた瞬間に送ってくるプログラム
送信回数の上限同じ相手からの大量送信

結果

  • 2日間のメンテナンスの後、ホームページを再開できました。
  • 外部から PHP を呼び出そうとする要求(20種類以上)を試し、すべて拒否されることを確かめました。
  • 見た目、URL、お問い合わせフォームの使い勝手は、これまでと変わりません。
  • お客様の問い合わせ内容を、外部サービスにもサーバにも残さない形になりました。

一方で、変わったこともあります。WordPress の管理画面は使わなくなり、これからは HTML を直接、AI に相談しながら直していきます。サイト内検索は、今は検索エンジンの検索に頼っています(サイトの中だけで完結する検索に置き換える予定です)。更新が月に数回程度のサイトなら、十分に割り切れる範囲だと考えています。

再開した後も、見張りは続ける

外に見せる部分を減らしても、狙われなくなるわけではありません。ログイン画面を探したり、古いプラグインの弱点を試したりする機械的なアクセスは、静的なサイトにも毎日届きます。

再開後のこのサイトは、当社が開発したホームページ監視カメラ「小人さん」で見張っています。ホームページへの訪問を町を歩く小人の姿で表し、攻撃の下見や侵入の疑いを一つの画面で確かめられます。サイトを作り替える必要はなく、アクセスの記録を送るだけで使えます。

ホームページ監視カメラ「小人さん」の画面

ホームページ監視カメラ「小人さん」

攻撃の「下見」から「侵入」まで見張ります。製品ページで紹介動画(約2分)もご覧いただけます。

同じような状況の方へ

「お知らせと製品紹介が中心」「更新は月に数回」「動きがあるのはお問い合わせフォームだけ」。こうしたサイトであれば、WordPress を静的な HTML に切り替えるだけで、PHP の脆弱性のたびにサイトを止める必要がなくなります。まずは次の四点を確かめてみてください。

  1. 訪問者ごとに内容が変わるページ(会員ページ、ネットショップなど)があるか
  2. フォームはいくつあり、何を受け付けているか
  3. 記事の更新はどのくらいの頻度か
  4. 載せているのは、外に公開するための情報か(社外秘やお客様の情報を扱う業務システムなら、別の考え方が必要です)

おわりに

脆弱性が見つかったとき、「修正版を当てる」以外に、「そもそも外に見せない」という選択肢があります。そして、AI が文章や HTML を扱えるようになった今、「誰でも更新できるように」と選んできた道具を、もう一度見直す時期に来ているのかもしれません。道具は、何を載せるサイトなのかに合わせて選ぶ。今回の切り替えが、その一つの例として参考になれば幸いです。

システムのご相談を承っています

当社は、業務システムの開発と運用、AI を使った書類の読み取りなどを手がけています。