ワードプレスのテーマやプラグインのPHPのソースコードを見てみるとその多くのファイルで if ( ! defined( ‘ABSPATH’ ) という記載が最上部にありますね。この記載がある理由や効果を解説したいと思います。
defined( ‘ABSPATH’ ){このPHPコードの意味
このコードは下記のような形になっているかと存じます。
if ( ! defined( 'ABSPATH' ) ) {exit;}
このコードの意味は、ABSPATH が定義されていない場合、コードの実行を即時停止せよという意味になります。
ABSPATHは、ワードプレスの実行時の最初期に定義される、ワードプレスがインストールされているフォルダのサーバー上のパスを示す変数です。
なぜABSPATHが定義されていない場合処理を停止する?
ワードプレスのプラグインやテーマのPHPプログラムは、おおもとのワードプレスが実行された後読みこまれます。
それは、ABSPATHが当然に定義された後となるはずです。
しかしABSPATHが定義されていないのにこのPHPプログラムが実行されたという事は、ワードプレスを仲介せずに直接このPHPプログラムがアクセスされたという事になります。
なぜその必要がないのに直接一部のPHPプログラムがアクセスされたかを考えると、もしかしたらプログラムの脆弱性をハッカーが利用しようとしているからかもしれません。
このため、プログラムに脆弱性があったとしても、ファイルへの直接アクセスによってそれが利用されないよう、if ( ! defined( ‘ABSPATH’ ){ という記載をプログラマがセキュリティー上の観点から記載しているという事になります。
ワードプレスのプラグインやテーマ開発におけるセキュリティー
ワードプレスがハッキングされてしまう理由の6割以上がPHPプログラムの脆弱性です。ただ、そのほとんどが、既知のかつ普及しているプラグインの脆弱性ですので、オリジナルのテーマやプラグインで普及していない(普及させるつもりのない)脆弱性が狙われることはごく稀です。
ただ、セキュリティーホールがないプログラムを作ることは、開発者であれば心掛けた方が確実に良いかと存じます。
if ( ! defined( 'ABSPATH' ) ) {exit;}
を直接アクセスされることのないプログラムの上部に挿入することは、脆弱性を攻撃するのを困難とする為、利用した方がいいかと思います。
プラグインの脆弱性検査もできる!【無料】ワードプレス:マルウェアスキャン&セキュリティープラグイン [マルウェア・ウィルス検出と駆除]
WordPress ワードプレスのマルウェアの駆除・セキュリティー対策のご依頼・ご相談はWPドクターまでお気軽にお送りください