wp-config.php が「WordPress で一番大事なファイル」である理由
まず前提から整理します。wp-config.php は、WordPress の「心臓部の設定ファイル」です。
データベース名
データベースユーザー名
データベースパスワード
ホスト名
認証用のキーやソルト
デバッグやファイル編集禁止などの重要フラグ
こういった「サイトの裏側のすべて」がここに書かれています。
極端に言えば、wp-config.php が盗まれると、
その情報を使ってデータベースに直接アクセスされたり、
別の環境にまるごとコピーされたりする可能性があります。
だから「wp-config.php を保護する」というのは、
WordPress セキュリティの中でもかなり優先度の高いテーマです。
wp-config.php に何が書かれているのかをイメージする
データベースへの“マスター鍵”が入っている
WordPress の記事やユーザー情報は、すべてデータベースに保存されています。wp-config.php には、そのデータベースに接続するための情報が書かれています。
データベース名(どのDBか)
ユーザー名(誰として接続するか)
パスワード(そのユーザーの鍵)
ホスト(どこにあるDBか)
これが漏れると、
「WordPress を通さずに、直接データベースにアクセスされる」可能性があります。
つまり、管理画面のログインをすべてすっ飛ばして、
中身だけ抜かれる、書き換えられる、ということが理論上は可能になります。
認証キー・ソルトも非常に重要
AUTH_KEY や SECURE_AUTH_KEY などの「キーとソルト」も、wp-config.php に書かれています。
これは、ログインセッションやクッキーの安全性を高めるための“秘密の文字列”です。
これが漏れると、セッションの偽造などのリスクが高まります。
つまり、wp-config.php は
「データベースの鍵」+「認証の秘密」
が一箇所に集まっている、超重要ファイルだと理解しておくべきです。
どんな攻撃から wp-config.php を守りたいのか
1. ブラウザから中身を見られるパターン
本来、wp-config.php は PHP ファイルなので、
ブラウザからアクセスされても「中身のコード」は表示されず、サーバー側で実行されて終わりです。
しかし、もし何らかの理由で
サーバーの設定ミスで PHP が実行されない.php ファイルがそのままダウンロードされる設定になっている
バックアップとして wp-config.php.bak のようなファイルを置いてしまった
といった状態になると、
ブラウザから wp-config.php(あるいはそのコピー)を直接ダウンロードされる危険があります。
これは、ほぼ「サイトの設計図と鍵を丸ごと渡す」のと同じです。
2. 他の脆弱性からファイルを読み取られるパターン
プラグインやテーマの脆弱性の中には、
任意のファイルを読み取れる
特定パスのファイルをダウンロードできる
といったものがあります。
そのときに狙われやすいのが、まさに wp-config.php です。
ここを読まれると、データベース情報などが一気に抜かれます。
だからこそ、「wp-config.php をできるだけ安全な場所に置く」「直接アクセスされないようにする」という発想が重要になります。
具体的な保護の考え方 1:配置場所を工夫する
ドキュメントルートの一つ上に移動する
多くのサーバーでは、public_html や htdocs などが「Web から見える一番上のフォルダ(ドキュメントルート)」になっています。
WordPress をそこに置くと、
/public_html/wp-config.php
のような位置になります。
実は WordPress は、wp-config.php が一つ上の階層にあっても動作します。
例えば、
/public_html(ここに WordPress 本体)/wp-config.php(一つ上の階層)
という構成にしても、WordPress はちゃんと wp-config.php を見つけて読み込みます。
こうしておくと、
ブラウザからアクセスできる範囲(ドキュメントルート)
の外に wp-config.php を逃がせる
というメリットがあります。
攻撃者がどれだけ URL を叩いても、
そもそも Web から見える場所に wp-config.php が存在しない、という状態を作れるわけです。
すべての環境でできるわけではないが、できるなら強い
レンタルサーバーの仕様によっては、
ドキュメントルートの外にファイルを置けない場合もあります。
その場合は無理にやらなくてOKですが、
もし可能なら「wp-config.php を一つ上に逃がす」はかなり強力な防御になります。
プログラミングの感覚で言えば、
「公開ディレクトリの外に設定ファイルを置く」という、よくあるベストプラクティスです。
具体的な保護の考え方 2:Web サーバー側でアクセスを禁止する
Apache の場合のイメージ(.htaccess)
Apache を使っている環境では、.htaccess で特定ファイルへのアクセスを禁止することができます。
イメージとしては、WordPress のルートにある .htaccess に、
次のようなルールを追加する形です。
<Files wp-config.php>
order allow,deny
deny from all
</Files>
これにより、
ブラウザから wp-config.php に直接アクセスしようとすると
サーバーが「絶対に見せない」と判断して拒否する
という状態になります。
PHP が実行されるかどうか以前に、
「そもそもこのファイルは Web から見せない」というルールをサーバー側で強制するイメージです。
Nginx の場合のイメージ
Nginx でも同様に、設定ファイルで
wp-config.php へのリクエストを拒否するルール
を追加することができます。
具体的な書き方はサーバー設定に依存しますが、
発想としては「このファイル名に対するリクエストは全部 403(禁止)にする」というものです。
重要なのは、
アプリケーション(WordPress)の前に立っている Web サーバー側で
「このファイルは絶対に外から見せない」と決めてしまう
という考え方です。
具体的な保護の考え方 3:ファイル権限を適切にする
読める人を最小限にする
wp-config.php は、サーバー上のファイルとしても「誰が読めるか」を制御できます。
一般的には、
所有者(Webサーバーユーザー)は読み書きできる
グループやその他のユーザーは読めない
という状態にしておくのが理想です。
例えば、権限を 400 や 440 にする、といった運用がよく行われます。
これにより、
同じサーバー上の別ユーザー
誤った設定の別アプリケーション
などから wp-config.php を読まれるリスクを減らせます。
もちろん、権限を厳しくしすぎると WordPress 自体が読めなくなることもあるので、
サーバーの仕様に合わせて調整が必要ですが、
「誰でも読める 644 のまま放置」は避けたいところです。
プログラミングの感覚で捉える「wp-config.php を保護」
これは「環境変数や設定ファイルを外に晒さない」設計
アプリケーション開発では、
.env ファイル
設定ファイル(config)
秘密鍵やAPIキー
などを、
公開ディレクトリの外に置いたり、
アクセス制御をかけたりするのが基本です。
wp-config.php は、WordPress にとっての .env です。
ここを守るというのは、
環境変数を Git にコミットしない
設定ファイルを公開ディレクトリに置かない
といった、現代的な開発の常識と同じ方向の話です。
「破られない」ではなく「破られても被害を広げない」
セキュリティ設計のポイントは、
絶対に攻撃されないようにする
ではなく
攻撃されても被害を最小限にする
という発想です。
wp-config.php を保護するのは、
もし他の部分に脆弱性があっても
このファイルだけは簡単には読めないようにする
という、「被害の広がり方を制限する」ための一手です。
まとめ:wp-config.php は「最優先で守るべき1ファイル」
「wp-config.php を保護」というテーマの本質は、
データベースの鍵と認証の秘密が詰まったファイルを
Web から直接触れない場所・状態にしておく
ということです。
できることを整理すると、イメージとしてはこうです。
可能なら、ドキュメントルートの一つ上に移動する
Webサーバー(Apache / Nginx)側で wp-config.php へのアクセスを禁止する
ファイル権限を見直し、「読める人」を最小限にする
どれも「一度設定してしまえば、あとはずっと効き続ける」タイプの対策です。
今日、サーバーのファイル構成と wp-config.php の位置・権限を一度だけ確認してみてください。
そこをきちんと押さえるだけで、あなたの WordPress は「なんとなく動いているサイト」から、
「心臓部の設定まで意識して守られているサイト」に一段レベルアップします。


