WordPressの脆弱性を突かれてWebサイトが被害にあうのは何故だと思いますか?
それは、
『悪意のある第三者により、公開したサーバ側のプログラムを意図しない形で動作させられるから』
です。
WordPressもプラグインも全てプログラムです。その開発者たちが考えもしなかった想定外の仕方でアクセス(攻撃)があると、開発者の意図と異なった動きをしてしまいます。
例えば、データベースの中身を書き換えられたり(SQLインジェクション)、謎のファイルを置かれたり(ディレクトリトラバーサル)します。
でも、これは仕方のないことです。想定外なのですから。WordPressが入ったサーバを公開してネットに晒す以上、想定外を想定することは不可能です。
だから攻撃対策は難しく、想定外な攻撃アクセスが発覚する度に対策を施すしかありません。これがWordPressとプラグインをアップデートし続けなければならない理由です。
WordPressはそもそも何のために使うのか?
ここで一つ問いかけをしたいと思います。
『WordPress は、Webサイトを公開するために本当に必要ですか?』
すぐさま「今さら何を?お客様がコンテンツを自由に変更できるCMSが必要なんだ」という声が聞こえてきそうですね。しかし本当にそうでしょうか?サイト公開のためにWordPressが必要なのでしょうか?
いいえ。実は、不要です。
WordPressは、Webサイトを公開するためではなく、Webサイトのコンテンツを管理するために必要なだけなんですね。ブラウザ操作でページを編集できる機構が必要なのです。
サイトの公開の為にPHPやデータベースまで、絶対に必要…ではないですね。
そもそもWebサイトに必要なのは、htmlと関連ファイルだけです。1990年代はそうやってWebサイトを公開してました。
もしWordPressで作られた全ページが、htmlファイルと関連ファイルに都度変換できれば、PHPもデータベースも不要な攻撃を受けないWordPressサイトができあがります。これを実現するのが、WordPressの静的化技術です。
管理と公開を混同しない。静的化技術で役割を分離する
コンテンツの管理側にはプログラムが必要ですが、更新の度に全ページをhtml化できるなら、公開側にプログラムは不要な筈です。
管理側 | 公開側 | |
---|---|---|
アクセス許可範囲 | 限定 | 公開 |
サーバサイドプログラム | 有 | 無 |
悪意あるhttp/https攻撃が成立する可能性 | 有 | 無 |
本来、コンテンツの管理と公開は全く別物。管理には管理を支える技術があり、公開には公開を支えるノウハウがあります。当然、求められるセキュリティレベルや性質も異なります。
両者を混同して使えば、全体のセキュリティレベルは低い方に引っ張られます。そこに攻撃を受ける隙が生まれ、セキュリティ事故がそもそも起こり易くなります。それが今のWordPressです。
だから、アップデートをしよう?WAFを入れよう?
…そうではないのです。優先すべきことはただ一つ。WordPressが入ったサーバをネットに直接さらさずに、サイト公開を実現することです。静的化だけがそれを可能にします。
管理と公開の役割を明確に分離し、それぞれの役割に応じたセキュリティコントロールをすること。これこそが、安全なWordPressサイトの運営方法なのです。
攻撃を受けるのは、
『悪意のある第三者により、公開したサーバ側のプログラムを意図しない形で動作させられるから』
でした。であれば、PHPプログラムが無くてもサイトを公開できることを目指しましょう。攻撃される不安を払拭するにはそれしか選択肢はありません。
問い合わせフォームはどうするのか
ただ、問い合わせフォームやサイトな検索のようにPHPプログラムがどうしても必要な場合があります。
その場合は、当該ページを除いて静的化するのが正しいでしょう。たった1ページの為に、サイト全体を攻撃リスクにさらすべきではありません。
サイト全体の静的ページ率が高ければ高いほど、サイトは攻撃耐性が強くなっていきます。
espar では、サイト全体の静的化を理想としながらも、サイト事情を勘案した部分的な静的化ができるような柔軟な作りになっています。(詳しくは機能紹介ページの「プロキシ機能」をご覧下さい)