WordPressの投稿や固定ページ本文やウィジェットでPHPコードを動作させるのは危険なのか?

ワードプレスでサイト作りをしているとき、リスト表示などカスタマイズしたいときにググるとよく出てくる「このPHPコードをコピペして・・・」という紹介記事。

WordPressではセキュリティの観点から(後述します)投稿や固定ページなどの本文、ウィジェットではPHPコードを直接実行できるようになっていません。

そこで登場するのが「EXEC PHP」や「ezPHP」などのプラグイン。これらを使えば簡単に本文内でphpコードを実行できるようになります(専門用語では「phpを評価する」というようです)。

ただ、「EXEC PHP」はPHPのバージョンが7以降のサーバーでは動作しないし、ネット上ではこのプラグインは危険??というものがたくさんあります。

そこで今回は、投稿や固定ページの本文などでphpコードを直接実行するにあたって注意することについて分かる範囲で解説したいと思います。おそらく他のサイトとは大きく認識が違うと思いますので参考程度に読んでください。

スポンサーリンク



「PHPの直接実行は危険」は本当??

WordPressがこれを推奨しない(標準で実行しないようにしている)理由について、いろいろと調べてみました。

すると・・・PHPコードを直接実行することが危険だということでもないような結論に達しました。

懸念されるのは不正にログインされて、不正なPHPコードを記述されてしまうことなんです。

ここで考えるべきはログインしたときの権限。

管理者でログインされてしまえばテーマ内やプラグイン内のPHPプログラムを書き換えたりすることができますから、「サイト全体が危険=投稿や固定ページ本文に限ったことではない」ということになりますね。

そして、投稿者や寄稿者、編集者など記事投稿ができる権限では、その投稿にPHPコードを挿入して実行させることができるようになり、編集者は他人の投稿を編集できるようになりますからリスクが高まります。

つまり、PHPを記述することが危険なのではなく、不正にログインされることが危険ということなんですね。

結論としては不正ログイン対策をすることである程度の危険は回避できるということになります。

不正ログインしようとした形跡は当サイトでも見受けられます

当サイトに登場する不正ログインしようとした痕跡のあったIPアドレスはアクセスすることすら不可能にしてますから2度と来ることはできないのでそのうち減っていくとは思いますが、やっぱり何か悪さをする人、悪さをしようとする人は許せないので、情報を開示することにしました。

し、いろいろな方法で対策をすることはできます

インストールも簡単でレンタルブログよりも機能的なサイトが作れて、しかもカスタマイズできる「テーマ」や「プラグイン」も充実している、まさにいうことなしなサイト作成ツールであるWordpress。簡単故に潜む危険をご存じですか?未対策のまま使い続けているとしたら「このサイトを乗っ取ってください」と言っているようなものかもしれません。サイトが勝手に改変されたり乗っ取られたりする前に、簡単かつ最低限やっておきたいセキュリティ対策についていくつか紹介したいと思います。

のでいろいろな方法でサイトをガードするようにすることが最善策だと思われます。

PHPコードとショートコードのどちらを使う?

前述したようにPHPが投稿本文で実行できないとプラグインなどで作られたコンテンツを表示したり動作させたりする方法がありませんね。そこで登場するのがショートコード。[]で囲まれたコードを入れることで動作するという機能ですね。

これが何をしているかというと、ショートコードをWordpressが読み込んだときに、ショートコードの元となるプログラムを探しに行き、実行し、表示するという動作をさせているんです。これによって何かのコンテンツを追加表示させるためのプラグインが動作できるんですね。

それからショートコードにはもう1つ利点があって、Wordpressではエラーとなったショートコードは動作させずにショートコードをそのまま表示するようになっています。

PHPコードを本文で使えるようにして挿入し、表示してみたらエラーが出たという経験はありませんか?PHPは実行させた段階でエラーが出るとその下のプログラム行は読み込まずに停止してしまう(転んでしまう)という欠点があります。PHPを挿入した過去の投稿が使用できなくなったプログラムコードのせいで停止し、ページが表示されなくなっていることに気づかないなんてこともあります。それを回避できるのがショートコードのいいところです。

エラー時にはショートコードがズバリ表示されてしまいますが、それがショートコードであることはWordpressでサイトを作っている人しか分からないわけですから、ページが途中でエラーコードになってしまうよりはよっぽといいということです。

ではPHPコードをショートコード化して投稿本文などに挿入するには??というところへ行くと思います。それができるようになるプラグインがあるんですね。Wordpressはどこまでもすばらしい!!

そのプラグインは

【PHP Code for posts】は本文やウィジェットへ挿入したPHPコードが動作するようになるとともに、PHPコードをショートコード化してから挿入するようにできるプラグインです。

です。これを使うと、あらかじめ設定画面でPHPコードを入力したショートコードを作っておいて、そのショートコードを挿入すればエラー対処ができるというような機能を追加できます。非常に便利です。

ただ、このプラグインを使うと「EXEC PHP」のように投稿本文などに挿入されたPHPコードも実行できてしまうので、都市伝説のように言われているPHPコードを使えるようにするのは危険と考える方は使用を控えたほうがいいかもしれませんね。

トップへ戻る