wp-config.phpの仕組み
WordPressは、投稿や設定などのデータをデータベースに保存しています。wp-config.php は、そのデータベースに接続するための情報を書いておくファイルで、通常はWordPressをインストールしたフォルダの一番上の階層に置かれています。
主に次のような内容が書かれています。
- データベースの接続情報:データベース名、ユーザー名、パスワード、接続先(
DB_NAME、DB_USER、DB_PASSWORD、DB_HOST) - 認証用キーとソルト:ログイン状態を安全に保つための、ランダムな文字列
- テーブル接頭辞:データベースの表の名前の先頭に付ける文字列(
$table_prefix) - 動作の設定:デバッグ表示の有無(
WP_DEBUG)など
たとえるなら、サイトの「金庫の暗証番号」が書かれたメモです。このメモを見られると、データベースの中身を読まれたり、書き換えられたりするおそれがあります。
WordPressサイトでの例
wp-config.php は重要な情報が集まっているため、攻撃者に狙われやすいファイルです。
- 中身を読み取られる:プラグインの脆弱性を突かれてファイルの中身を読まれ、データベースのパスワードが漏れる
- 控えのファイルから漏れる:編集時に作った
wp-config.php.bakなどの控えが残っていると、PHPとして実行されず、中身がそのまま表示されてしまうことがある - 不正なコードを書き加えられる:ファイルの先頭や末尾に、別の不正なファイルを読み込む1行が追加され、マルウェアが毎回動くようにされる
wp-config.php はWordPressの表示のたびに読み込まれるため、ここに仕込まれたコードは、サイト全体に影響します。
確認方法
- 更新日時が、自分で編集した覚えのない日時になっていないか確認する
- 中身に、見覚えのない
includeやrequire、意味の読み取れない長い文字列がないか確認する - 同じフォルダに
wp-config.php.bak、wp-config.oldのような控えのファイルが残っていないか確認する
確認するときは、ファイルを編集する前に必ずバックアップを取ってください。1文字の誤りでもサイトが表示されなくなることがあります。
対策
- パーミッションを、ほかの利用者が読めない設定にする(WordPressの公式資料では
440または400が目安とされています。サーバーによって推奨値が異なるため、契約先の案内も確認してください) - 不要な控えのファイルは削除する
- 侵入を受けたら、データベースのパスワードを変更し、認証用キーとソルトを新しいものに入れ替える(入れ替えると、ログイン中の全員がログアウトされます)
- 管理画面からテーマ・プラグインのファイルを編集できないよう、
define( 'DISALLOW_FILE_EDIT', true );を追加する
ファイルの中身に不審な点を見つけたものの判断がつかない場合は、専門業者に相談してください。



