PHP

WordPress の PHP セキュリティ対策:最新バージョン・危険関数無効化・入力サニタイズ・権限管理・Imunify360活用

ⓘ本ページはプロモーションが含まれています

お得なお知らせ

スポンサードリンク
AI時代のキャリア構築

プログラミング学習、今日から動き出す

「何から始めるか」で止まっている人こそ、無料説明会や本で自分に合うルートを30分で確定できます。

Enjoy Tech!|月額制でWeb系に強い▶ (Kindle本)ITエンジニアの転職学|後悔しないキャリア戦略▶

▶ AIコーディング環境なら  実践Claude Code入門(Amazon)が実務で即使える入門書です。Amazonベストセラーにも選ばれていますよ。


スポンサードリンク

1️⃣ PHP バージョン管理と公式サポート

重要ポイント

項目 推奨設定 補足
使用 PHP バージョン PHP 8.2 以上(可能なら 8.3) 最新のパフォーマンス改善とセキュリティ修正が含まれます。
自動更新 cPanel/WHM の MultiPHP Manager で自動適用を有効化 手動ミス防止に必須です。
旧バージョン使用時の対策 Imunify360 の「PHP Security」機能で脆弱性検知・通知 パッチ自動適用は行わない点に注意(※)。

※Imunify360 は古い PHP バイナリそのものを更新しませんが、脆弱性の検出・アラートWeb アプリケーションファイアウォール (WAF) による保護を提供します。公式情報はImunify360 ドキュメントをご参照ください。

公式サポートスケジュール(PHP.net)

PHP バージョン アクティブサポート終了 セキュリティサポート終了
8.2 2024‑12‑08 2027‑12‑08
8.1 2023‑11‑25 2026‑11‑25
8.0 2022‑11‑26 (終了) 2025‑11‑26
7.4 2021‑11‑28 (終了) 2022‑11‑28 (終了)

※最新情報は公式リリースノート(https://www.php.net/supported-versions.php)で随時確認してください。

実装手順例

ポイントauto_prepend_file はリクエスト毎に実行されるため、バージョンダウングレードを即座に検出できます。


2️⃣ 危険関数の無効化と安全ラッパー

なぜ無効化が必要か

exec, system, shell_exec, eval などは リモートコード実行 (RCE) の入口になることが多数報告されています。Kinsta が公開した「PHP セキュリティベストプラクティス」でも、これら関数の無効化が推奨されています。

php.ini / .user.ini での設定例

Web サーバーが php_value ディレクティブを許可していない場合は、.htaccess ではなく .user.ini を使用してください(Apache の場合は AllowOverride Options が必要)。

必要時の安全ラッパー(最小限に留める)

ベストプラクティス:ラッパー関数自体もコードレビューの対象とし、「危険関数が呼び出されていないか」grep -E 'exec|system|eval|shell_exec' -r . で定期的にチェックしてください。


3️⃣ 入力データのサニタイズ・エスケープ徹底

WordPress 標準関数の活用

処理対象 推奨関数
HTML 出力 wp_kses()esc_html()esc_attr() echo esc_html( $title );
データベースクエリ $wpdb->prepare() $sql = $wpdb->prepare('SELECT * FROM wp_posts WHERE ID=%d', $id);
GET/POST 取得 filter_input() $page = filter_input(INPUT_GET, 'paged', FILTER_VALIDATE_INT, ['options'=>['default'=>1,'min_range'=>1]]);

カスタム許可タグ(例:埋め込み iframe)

注意点wp_kses() の第二引数は 'post' かカスタム配列を渡すようにし、デフォルトの許可タグだけで済むケースでは上書きしないこと。

コードレビュー項目(チェックリスト化)

  • [ ] $_GET/$_POST/$_REQUEST → いずれもサニタイズ関数が適用されているか
  • [ ] DB クエリは必ず $wpdb->prepare が使用されているか
  • [ ] HTML 出力前に wp_ksesesc_html* 系でエスケープしているか

4️⃣ ファイル・ディレクトリ権限 & バックアップフロー

権限ベストプラクティス(Linux/Unix)

補足wp-content/uploads は書き込みが必要なので、サブディレクトリは 755 のままで問題ありません。Imunify360 の File Integrity Monitoring(FIM)で権限変更をリアルタイムに検知できます(公式ドキュメント)。

毎日自動バックアップスクリプト例(bash + WP‑CLI)

cron 設定(毎日 02:00 実行)

復旧手順概要

  1. ファイル復元
    tar -xzf /backup/20260423_0200/files.tar.gz -C /var/www/html
  2. データベースインポート
    /usr/local/bin/wp db import /backup/20260423_0200/db.sql --allow-root

復旧テストはステージング環境で月1回実施し、バックアップの整合性を確認してください。


5️⃣ Imunify360 を活用した総合防御策

5‑1. WAF(Web Application Firewall)設定例

攻撃種別 推奨ルール 設定手順
SQLi /wp-admin/admin-ajax.php の不正クエリ文字列をブロック Imunify360 → WAF → カスタムルールREQUEST_URI ~* "admin-ajax\.php"ARGS に SQL キーワードが含まれる場合 BLOCK
XSS POST データに <script> が含まれたら 403 同上、BODY パラメータ正規表現で検出
管理画面保護 IP 制限(社内 VPN のみ) REQUEST_URI ~* "wp-login\.php|/wp-admin"REMOTE_ADDR !~ "^203\.0\.113\."BLOCK

設定例(Imunify360 UI で入力する JSON スニペット)

詳細は公式マニュアル「[WAF Custom Rules]」https://docs.imunify360.com/waf/custom-rules.htmlをご参照ください。

5‑2. 脆弱性診断・マルウェアスキャンの運用フロー(AeyeScan 参考)

  1. Imunify360 の「Malware Scanner」でフルスキャンを実行(週1回推奨)。
  2. スキャン結果は CSV エクスポートし、Critical な項目は 24 時間以内に修正。
  3. composer auditwp security scan(WP‑CLI)で依存パッケージとプラグインの脆弱性を確認。
  4. 修正済みかどうかは JiraGitHub Issues でチケット化し、期限付きで対応。

コマンド例

5‑3. ログイン保護のベストコンビネーション

手段 推奨プラグイン / 機能
強力パスワード Wordfence → 「Password Policy」
二要素認証 (2FA) WP 2FA(無料版で OTP)
ログイン URL 隠蔽 WPS Hide Login
ブルートフォース防止 Imunify360 の Brute Force Protection

6️⃣ 実践チェックリスト(まとめ)

カテゴリ 確認項目 ステータス
PHP バージョン PHP 8.2+ がインストールされ、auto_prepend_file でバージョン検知が有効か
サーバー自動更新(cPanel/WHM の MultiPHP Manager)がオンになっているか
Imunify360 の PHP Security が有効で、脆弱性アラートを受信できているか
危険関数 disable_functions に対象関数が列挙されているか
必要時の安全ラッパーがコードベースに存在し、レビュー済みか
サニタイズ 全ての外部入力($_GET/POST/REQUEST)に filter_inputsanitize_* 系が適用されているか
DB クエリは $wpdb->prepare で安全化されているか
HTML 出力は wp_ksesesc_html* 系でエスケープしているか
権限 & バックアップ ディレクトリ 755 / ファイル 644 が徹底されているか(wp-config.php は 640)
毎日自動バックアップが稼働し、ログに記録されているか
ステージング環境で復旧手順のリハーサルを実施済みか
WAF & 脆弱性診断 Imunify360 のカスタム WAF ルールが適用されているか(SQLi/XSS/管理画面制限)
月1回以上、Imunify360 と AeyeScan 手順でスキャンし結果をレビューしているか
Critical 脆弱性は 24 時間以内にパッチ適用または削除が完了しているか
ログイン保護 強力パスワードと 2FA が全ユーザーで必須化されているか
ログイン URL を変更し、ブルートフォース対策が有効か

使い方:定期的(例: 毎月第1営業日)にこのチェックリストを実行し、ステータス に更新してください。未完了項目は即時対応タスクとしてチケット化すると管理が楽になります。


参考リンク集

項目 URL
PHP サポート期間(公式) https://www.php.net/supported-versions.php
WordPress コーディングスタンダード https://developer.wordpress.org/coding-standards/
Imunify360 ドキュメント(PHP Security) https://docs.imunify360.com/faq/php-security.html
Imunify360 WAF カスタムルール解説 https://docs.imunify360.com/waf/custom-rules.html
Kinsta の PHP セキュリティベストプラクティス https://kinsta.com/blog/php-security/
GIG(日本) WordPress セキュリティ記事 https://gig.jp/wordpress-security/
AeyeScan 脆弱性診断レポート例 https://aeyescans.com/sample-report
WP‑CLI 公式サイト https://wp-cli.org/

最後に

  • PHP 8.2+ の導入はパフォーマンス向上だけでなく、長期的なセキュリティ確保の第一歩です。
  • Imunify360 は「脆弱性検知・WAF」として位置付け、古い PHP を直接更新する代替策ではありません。
  • コードレビューと自動化(スクリプト・cron)を組み合わせることで、人為的ミスや設定忘れを防げます。

このガイドに沿って環境を点検し、安全かつ高速な WordPress サイト運営を実現してください。 🚀

スポンサードリンク

お得なお知らせ

スポンサードリンク
AI時代のキャリア構築

プログラミング学習、今日から動き出す

「何から始めるか」で止まっている人こそ、無料説明会や本で自分に合うルートを30分で確定できます。

Enjoy Tech!|月額制でWeb系に強い▶ (Kindle本)ITエンジニアの転職学|後悔しないキャリア戦略▶

▶ AIコーディング環境なら  実践Claude Code入門(Amazon)が実務で即使える入門書です。Amazonベストセラーにも選ばれていますよ。


-PHP