Webサイトを守るために、WordPressをやめることにした

紙で表現したWebページと、鍵穴のある盾のイメージ

セキュリティ対策を続ける中で考えたこと

伸和印刷のWebサイトを、WordPressから静的サイトへ変更することにしました。

きっかけは、セキュリティについて改めて考える必要が生じたことでした。

実は以前にも、当社のWebサイトが改ざんされたことがありました。その際には、さまざまな対策を検討し、WordPressの管理画面へアクセスできるIPアドレスを制限するなど、外部からの不正アクセスを防ぐ対応を行いました。

それからもWordPressを使い続けていましたが、今回、PHPの脆弱性やサポート期限について改めて確認する機会がありました。

更新したくても、簡単には更新できない

当社のサイトでは、PHP 7.4を使用していました。PHP開発元による公式サポートは、2022年11月28日に終了しています。PHP公式のサポート終了一覧にも掲載されています。

そこで、PHP 8.4への更新を試みました。

ところが、更新を試す過程で、古いWordPressテーマに関する警告や、セキュリティプラグインに関する処理時間超過、メモリ不足のエラーなどが発生しました。いったん以前のPHPに戻すことでサイトは復旧しましたが、それぞれの原因や互換性を確認する必要がありました。

WordPress本体を新しくしていても、テーマやプラグインなど、周辺の仕組みまで含めて更新し続けなければならない。そして長く運用しているサイトほど、それぞれの互換性を維持することが難しくなる場合があります。

もちろん、適切に管理すればWordPressは便利な仕組みです。今回の問題も、必要な修正を行えば解決できたかもしれません。ただ、そこで一つ疑問が生まれました。

そもそも、私たちのサイトにWordPressは必要なのだろうか。

便利なサービスに任せれば安心なのか

自社でソフトウェアを管理することが難しいのであれば、外部のWebサイト制作・運用サービスを利用する方法もあります。サイトの制作・更新をしやすくし、サーバーやソフトウェアの管理負担を軽減できることは、大きなメリットです。

ただし、外部サービスを利用しても、そのサービスへの不正アクセスや設定の不備などによって、情報が流出するリスクは残ります。任せればすべて安心、というわけではありません。

自分たちで管理すれば自分たちの責任が生じ、外部のサービスに任せれば、そのサービスに依存する部分が生まれます。では、どうすればいいのでしょうか。

そもそも、その機能は必要なのか

当社のWebサイトを改めて考えてみると、記事を更新するのは年に数回程度です。日々大量の情報を登録したり、複数人で更新したりするわけではありません。

それであれば、サイトの表示や更新のために、常にWordPressやPHP、データベースを動かしておく必要はないのではないか。そう考え、HTMLやCSSなどのファイルをそのまま公開する静的サイトへ変更することにしました。

静的サイトにもリスクはあります。サーバーや公開用アカウントの管理、外部スクリプトやサービスとの連携など、考えるべきことがなくなるわけではありません。

それでも、使っていない管理機能や実行プログラムを公開環境からなくすことで、攻撃され得る部分を減らせます。

ただし、HTMLを置くだけで、古いWordPressやPHPファイルをアクセスできる場所に残していては、この目的を果たせません。移行時には、旧サイトのプログラムやバックアップを公開領域から外すことも必要です。

問い合わせフォームにはNotion Formsを利用する

一方、お問い合わせフォームまでなくしてしまうわけにはいきません。そこで、フォーム機能にはNotion Formsを採用することにしました。

Notion Formsは、回答をNotionのデータベースに保存する仕組みです。そのため、WordPressやPHPを使って自社サーバーでフォームを動かす必要がありません。仕組みはNotionの公式ヘルプでも説明されています。

ただし、外部サービスを利用すれば安全が保証されるわけではありません。Notion側の不正アクセスや障害、管理アカウントの乗っ取り、回答データベースの公開設定ミスなど、別のリスクは残ります。

問い合わせに必要な情報だけを取得し、回答データベースを一般公開せず、必要な担当者だけがアクセスできるようにする。管理アカウントの多要素認証を有効にし、不要になった個人情報は適切に削除する。こうした運用が必要です。

フォームの公開範囲と回答データの共有権限は、分けて確認する必要があります。共有権限や2段階認証などの管理は、引き続き自分たちの責任です。

今回の変更は、セキュリティ管理を外部に丸投げするためではありません。

自社で管理するプログラムを減らし、必要な機能だけを外部サービスに任せることで、管理する対象と責任を明確にする。

そのような考え方で仕組みを選びました。

安全を求めて、仕組みを複雑にしない

私たちは印刷会社ですが、「印刷をしないことも提案する」という考え方を大切にしています。印刷物をつくることを目的にするのではなく、その先に実現したいことを考える。今回のWebサイトの見直しも、少し似ていると感じています。

セキュリティ対策として機能を追加することも大切です。しかし、機能を追加すれば管理する対象も増えます。守るべきものが増えれば、その分、維持していく仕事も生まれます。

必要なものを守るために、必要のないものを持たない。

もちろん、すべてのWebサイトを静的化すべきだとは思いません。更新頻度が高いサイトや、複雑な機能を必要とするサイトでは、CMSを利用する方が適切な場合もあります。

また、静的サイトにしたからといって、セキュリティ対策が不要になるわけでもありません。重要なのは、どの仕組みが絶対に安全かを探すことではなく、自分たちに何が必要で、どのリスクを自分たちで管理するのかを考えることだと思います。

リスクをゼロにするのではなく、どのリスクを自分たちで持つのかを選ぶ。

今回は、安全性を高めるために、何を追加するかではなく、何をやめるかを選びました。これからも、便利な技術を活用しながら、必要以上に複雑な仕組みを持たないことを意識していきたいと思います。