最近ではWordPressでサイト運営する上でも、セキュリィティ対策に時間を取れらる事が多くなりました。
また、WordPress本体だけでなく、プラグインやテーマの脆弱性も指摘されています。
信頼性が高いWordPress公式ディレクトリにあるプラグインやテーマを、常に最新の状態で使用する事が求められています。
テーマに関しては、アップデート後にカスタマイズ内容的が消えてしまう事を防ぐ為に、WordPressでは子テーマでの運営が推奨されています。
しかし、子テーマでの運営にはセキュリティ上のリスクが潜んでいます。
しかもこのリスクに関して、何故かネットではほとんど語られていません。
それどころか、セキュリィ面からも子テーマの作成が推奨されている事が多いです。
では、どこにリスクが潜んでいるのか・・・
カスタマイズを加えたテンプレートファイルです。
Header.phpとsingle.phpにカスタマイズを加えた場合のファイル構成です
子テーマでの運営では
親テーマ(上の例ではpoint)のfunctions.phpの前に読込まれ、CSSの読込み順を制御するfunction.phpと、
親テーマのカスタマイズ内容のみを既述したstyle.cssを、小テーマのフォルダ(上の例ではpoint-child)に作成して運用します。
(注)親テーマが 1つの style.css ファイルを使用してすべての CSS を保持している場合の例です)
そしてカスタマイズを加えたいテンプレートファイルがあれば(上の例では、header.phpとsingle.php)、親テーマから子テーマにコピーした上で、子テーマのテンプレートにカスタマイズを加えます。
WordPressは、子テーマフォルダにあるfunction.phpとstyle.cssを、親テーマのそれぞれの内容に追加します。
(親テーマの記述内容を上書きしない)
一方それ以外は、子テーマフォルダにあるテンプレート(上の例では、header.phpとsingle.php)を読み込みます。
(親テーマの記述内容を上書きする)
従って親テーマがアップデートされても、子テーマのカスタマイズを加えたテンプレートは影響を受けないという仕組みです。
しかしこれは、小テーマの、カスタマイズをしたテンプレートファイル(上の例では、header.phpとsingle.php)がアップデートされない事を意味します。
テーマアップテート後の状態
テーマのアップデート時には、オリジナルCSSだけでなくテンプレートファイルもアップテートされる事があります。
テンプレートファイルのアップデートには、セキュリティ上のアップデートも含まれているはずです。
もしカスタマイズしたテンプレートに脆弱性があった場合、小テーマでの運用では脆弱性が残ったままになるのです。
先に述べた通り、WordPressのカスタマイズでは、セキュリィ面からも子テーマの作成が推奨されています。
しかしその根拠は、「テーマのアップデート時にカスタマイズした部分が影響を受けないゆえに、テーマのアップデートが容易」という理由からです。
セキュリィ面からすると、テンプレートファイルのアップデートも全て子テーマのテンプレートファイルにも反映すべきなのですが、この視点は何故かほとんどスルーされいます。
そもそも、小テーマにコピーしたテンプレートファイルにもアップテート内容を反映しなければならないのなら、小テーマを作るメリットはないからてしょうか。
では、小テーマを作らずにテーマのアッブデートを行う為に、僕は如何にしてテーマのカスタマイズを行ったのか…
次のエントリーで詳しく説明致したいと思います。