WordPress Tips | セキュリティ:wp-config.php を保護

web Web
スポンサーリンク

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_KEYSECURE_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_htmlhtdocs などが「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 は「なんとなく動いているサイト」から、
「心臓部の設定まで意識して守られているサイト」に一段レベルアップします。

Web
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました