WordPressのブロックテーマはテンプレートがhtmlのため、直接アクセスできる状態です。通常はコンテンツを記述するファイルではありませんが、運用方法によっては閲覧制限専用のテンプレートに機密情報を直書きすることもあります。用心のため、セキュリティ設定を追加します。
テンプレート直接アクセス禁止
ブロックテーマのテンプレートは/templates/配下と/parts/配下にあります。
- /wp-content/themes/テーマ名/templates/fromt-page.html
- /wp-content/themes/テーマ名/parts/header.html
また、テーマ設定ファイルであるtheme.jsonは以下にあります。
- /wp-content/themes/テーマ名/theme.json
これらにブラウザから直接アクセスできないように、/wp-content/themes/テーマ名/に.htaccessをアップロードします。
.htaccessの内容は、htmlファイルとJSONファイルへの直接アクセス禁止です。
<FilesMatch "\.(html|json)$">
Require all denied
</FilesMatch>
アップロード後、該当ファイルにアクセスしステータス403が表示されれば成功です。
phpファイルにif ( ! defined( ‘ABSPATH’ ) ) exit;を追記する
上記設定はphpファイルは含まれていません。WordPressでphpファイルの直接アクセスを禁止する方法は、各phpファイルの冒頭に下記を追記することです。
if ( ! defined( 'ABSPATH' ) ) exit;
この仕組みを説明します。WordPressの起動プロセスでは初期段階で必ずABSPATHという定数が定義されます。phpファイルのURLを直接開くと、ABSPATHが未定義のため、そこでプログラムが終了し、phpファイルのプログラムは実行されません。
仮に上記コードがない状態では、phpファイルにechoがあればブラウザにechoされてしまいます。これは不正に挿入された悪意のあるコードを実行可能な状態のため大変危険です。
WordPress 6.8.3に同梱されているTwenty Twenty Fiveテーマでは記述されていないのですが、設定が無駄になることはないため追記しました。
