wp-config.php 安全漏洞:WordPress 安全強化

聯盟行銷揭露 Ver 3.1
聯盟行銷揭露 Ver 3.2(僅限行動版)

用 vi 開啟 wp-config.php 的期間,同一個資料夾中產生的 swap 副本(.swp)曾經可以直接透過網址開啟。這是 2026-09-13 在這個網站上實際確認到的情況,而那個副本裡,資料庫密碼與安全金鑰全都包含在內。

wp-config.php 的安全性,請從上到下依序檢查以下六項。

1️⃣ wp-config.php 外洩會發生什麼事

wp-config.php 裡存放著資料庫名稱、使用者、密碼,以及用來加密登入 Cookie 的 8 個安全金鑰。

WordPress 的 wp-config.php 檔案

這個檔案一旦外洩,攻擊者就能直接連線到資料庫,或是用安全金鑰偽造登入工作階段,奪走管理員權限。

2️⃣ 將檔案權限限制為 600

WordPress 通常把資料夾設為 755、檔案設為 644,但 wp-config.php 要限制為只有擁有者能讀寫的 600。這是在測試網站 testpilotweb.com 上執行的指令。

chmod 600 /home/testpilotweb/www/wp-config.php
stat -c '%a %U' /home/testpilotweb/www/wp-config.php
600 testpilotweb

在 PHP 以不同於檔案擁有者的帳號執行的伺服器上,設成 600 後 WordPress 會讀不到這個檔案,網站就打不開。testpilotweb.com 的 PHP-FPM 是以和擁有者相同的帳號執行,所以變更後網站仍能正常開啟。

無法使用 SSH 的共享主機,可以在 FTP 軟體或 cPanel File Manager 的權限選單中改成同樣的值。

3️⃣ 在網頁伺服器封鎖存取

如果無法變更權限,或想再多加一層防護,就讓網頁伺服器直接拒絕對 wp-config.php 的請求。

🔲 Apache(.htaccess)

<Files wp-config.php>
    Require all denied
</Files>

舊文章裡常見的 [order allow,deny]、[deny from all] 是 Apache 2.2 的語法。在 Apache 2.4 中,只有啟用相容模組(mod_access_compat)時才會生效。

🔲 nginx

nginx 不會讀取 .htaccess,所以要在伺服器設定檔中加入 [location] 規則;這個網站也是用同樣的方式回傳 403。

location ~* /wp-config(-sample)?\.php$ {
    deny all;
}

正規表示式中的點要用 [\.] 跳脫。如果點維持原樣,連 [/wp-config-php-basic-settings/] 這類文章網址也會被擋住,這個網站就曾因為同樣的錯誤,讓文章出現 403 而打不開。

4️⃣ 封鎖編輯器暫存檔與備份檔

用 vi 開啟檔案期間產生的 [.swp] 副本,以及修改前留下的 [.bak] 副本,都不會被當成 PHP 執行,而是以純文字原封不動地送出。

在 nginx 中一併阻斷這兩類檔案;[444] 是不回應就直接關閉連線的 nginx 專用代碼。

location ~ \.sw[opx]$ { return 444; }
location ~* (\.(bak|orig|old|save)|_ori|\.bak\.[0-9]+)$ { return 444; }

5️⃣ 移到網站根目錄的上一層

WordPress 會先在安裝資料夾尋找 wp-config.php,找不到時再從正上方的資料夾載入。把檔案移到 [public_html] 外面的上一層,就無法透過網址存取。

不過,如果上一層資料夾裡有另一個 WordPress 的 [wp-settings.php],WordPress 就不會讀取那個資料夾中的 wp-config.php。移動之後,請立刻確認網站與管理後台是否能正常開啟。

6️⃣ 停用檔案編輯

在 WordPress 控制台中停用 「佈景主題檔案編輯器」 與 「外掛檔案編輯器」 選單。即使攻擊者奪取了管理員權限,這也是阻止透過網頁植入惡意程式碼最有力的防禦措施之一。

define('DISALLOW_FILE_EDIT', true);	

7️⃣ 刪除 wp-config-sample.php

wp-config-sample.php 是安裝時使用的範例檔案,安裝完成後就可以刪除。裡面雖然沒有敏感資訊,但這是攻擊者會用預設路徑找尋的檔案,沒有理由留著。

範例檔案中的實際設定行與各項目的意義,整理在 wp-config.php 基本設定 一文中。如果不刪除而留著這個檔案,上方 nginx 規則中的 [(-sample)?] 部分也會一併封鎖它。

WordPress Box

ℹ️ 聯盟行銷說明
本站內容包含聯盟行銷連結。訪客透過這些連結購買商品或服務時,本站會從賣家獲得佣金。在這個過程中,購買者支付的金額(遇到活動折扣時金額會降低↓)並不會因此提高。刊登的價格、折扣與庫存資訊以撰寫當時為準,可能與實際情況不同,購買前請向賣家做最後確認。商品的挑選與評價依本站自訂的標準撰寫,是否支付佣金不會影響介紹順序或評價內容。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Prove your humanity: 1   +   3   =