WordPress 被駭之後,第一件該做的事不是刪檔,是先把現場完整保存下來。大多數人發現網站被塞黑頁或被掛暗連結的反應,是立刻把看起來可疑的檔案砍掉、把後台密碼改一改,然後鬆一口氣。這個順序有兩個問題:可疑的檔案被刪掉之後,你就再也查不出對方是從哪裡進來的;而且被塞進來的東西幾乎不會只有一個,砍掉看得見的那個,剩下的照樣在。
正確的順序是四步:保存現場 → 還原到乾淨的還原點 → 換掉所有憑證 → 補上原本的入口。下面逐步說明,並且說清楚主機端能替你擋掉什麼、擋不掉什麼。至於網站本來就慢、還沒被駭的情況,請見WordPress 網站很慢怎麼辦;要換主機的話,搬家本身的陷阱寫在WordPress 搬家怎麼搬不掉排名。
怎麼判斷真的被入侵了,而不是只是壞掉
被入侵與單純故障的差別,在於「內容有沒有被改成別人想要的樣子」。下面幾個徵兆一旦出現,就要當成入侵處理,而不是當成外掛衝突:
| 徵兆 | 通常代表什麼 | 優先度 |
|---|---|---|
| 搜尋結果裡出現不是你寫的標題(賭博、藥品、仿冒品) | 被植入專門給搜尋引擎看的頁面,一般訪客直接開網站看不到 | 高,會直接影響既有排名 |
| 從 Google 點進來會被轉走,自己直接輸入網址卻正常 | 轉址判斷來源,刻意避開網站擁有者 | 高 |
| 頁面原始碼底部多出一堆看不見的連結 | 暗連結,對方在借你的網站權重 | 高 |
| 後台出現你不認識的管理員帳號 | 對方已經取得可持續使用的入口 | 最高,代表憑證已經外流 |
| 網站目錄裡出現名字像亂碼、或副檔名對不上內容的檔案 | 後門程式,通常不只一個 | 最高 |
| 單純白畫面、單純 500 錯誤、更新完外掛才開始壞 | 多半是相容性或資源問題,不是入侵 | 照一般故障排除處理即可 |
這裡值得補一句實際觀察:被掃描不等於被入侵。我們把自己這台主機在 2026-09-19 的存取紀錄拿出來看,從清晨到下午總共 522 個請求,其中 26 個回 404,裡面包含對 /s.php 的 4 次與 /1234.php 的 3 次嘗試——那些檔案在網站上根本不存在,所以回 404 就是正確的結果。任何一個開在公開網際網路上的網站,每天都會收到這種自動化的試探,這是常態,不是警訊。真正要處理的是「試探成功了」留下的痕跡,也就是上表前五列。
還原的四個步驟:順序錯了會被打第二次
第一步:保存現場,不要先刪
把整個網站目錄與資料庫原封不動打包一份,存到網站以外的地方(本機或另一顆硬碟,不要放在同一個網站空間裡)。這一包不是拿來還原的,是拿來事後查對方從哪裡進來的。順手把當天前後的存取紀錄也留一份——入侵路徑幾乎都寫在裡面,而紀錄檔會輪替,過幾天就沒了。
第二步:還原到入侵發生之前
重點在「之前」兩個字。很多人還原到最近一次備份,結果那一份已經含有後門,等於什麼都沒做。判斷方法是用第一步留下的紀錄,找出可疑檔案第一次出現的時間,再挑那個時間點之前的還原點。這也就是為什麼備份能往回追多久,比備份多密集更重要。
第三步:把所有憑證換一輪
主機控制台、FTP/SFTP、資料庫使用者、WordPress 後台每一個管理員帳號,全部換新密碼,不是只換被發現有問題的那一個。如果同一組密碼還用在別的服務上,那些也要換。這一步最容易被跳過,也是「還原完又被打一次」最常見的原因。
第四步:補上原本的入口,再放回線上
還原只是把網站回到過去,它沒有修掉當初被利用的那個洞。把所有外掛與佈景更新到現行版本,停用並刪除已經不用的外掛(停用但留著的外掛,檔案還在、一樣能被直接呼叫),確認 PHP 版本還在有安全性更新的版本區間。做完才把網站放回公開。
最常見的兩個錯誤
一、只刪檔不還原。後門很少只放一個,刪掉看得到的那個,過幾天網站又變回去。
二、只還原不換密碼。如果對方是拿著正確的密碼登入的,那你還原幾次他就進來幾次。這兩件事必須一起做,順序是先保存、再還原、再換密碼。
備份要能還原才算備份:怎麼驗收
「有備份」和「還原得回來」是兩件事。沒有被真正還原過的備份,在需要它的那天有相當高的機率派不上用場——可能是備份其實早就失敗了沒人發現,可能是只備了檔案沒備資料庫,也可能是還原所需的時間遠超過你能接受的停機時間。驗收備份只有一個方法:真的還原一次,而且不要在正式站上做。
給一個量級參考。我們自己這台主機上,帳號層級的還原點目前有 22 個,最新一個是 2026-09-15、最舊一個可以回到 2026-01-01,也就是還原點涵蓋約九個月。以本站的網站目錄為樣本實測:
| 項目 | 實測值 |
|---|---|
| 網站目錄檔案數 | 4,618 個檔 |
| 網站目錄大小 | 226 MB |
| 打包壓縮後大小 | 154,664,960 位元組(約 147 MB) |
| 解壓還原耗時 | 27.6 秒 |
把這個數字講白:還原本身很快,慢的是別的環節。真正吃掉時間的是找出該還原到哪一個時間點、把備份檔從遠端拉下來、以及還原後逐項確認網站真的正常。所以在評估「我們最久能停多久」的時候,不要只算解壓縮那幾十秒。
備份的三個檢查項
一、往回追得夠遠嗎?暗連結這類攻擊常常幾週後才被發現,只留七天的還原點在那時候全部都是髒的。
二、檔案與資料庫都有嗎?只備檔案的備份,還原回來會是一個沒有內容的空殼。
三、備份放在哪裡?備份檔如果就放在網站目錄底下,入侵者進得來,它也一起沒了;順帶一提,那種備份檔往往還能被直接下載,等於把整站原始碼公開。
主機端的六道防線:能擋什麼、擋不掉什麼
選主機的時候,安全相關的說法通常都很像。比較務實的問法是「這台主機上有哪幾層防護,各自擋的是什麼」。以我們自己在用的環境為例,可以拆成六層:
| 防線 | 擋得掉 | 擋不掉 |
|---|---|---|
| 網站應用防火牆(WAF) | 已知攻擊特徵的自動化掃描與注入嘗試 | 長得像正常請求的攻擊、用正確密碼登入的人 |
| 帳號之間的資源與權限隔離 | 同一台機器上別的網站被打之後波及到你 | 你自己網站內部的漏洞 |
| 帳號層級的定期備份與還原點 | 已經發生的損害,讓它可以回復 | 入侵本身,它是最後一道,不是第一道 |
| 可切換的 PHP 版本 | 被迫停在已經沒有安全性更新的舊版 | 外掛本身的漏洞 |
| SSL 憑證與 HTTPS | 傳輸過程被竊聽、密碼在途中被攔截 | 網站內容被改、後台被登入 |
| 存取紀錄 | ——(它不擋任何東西) | 但沒有它,你事後查不出入侵路徑 |
第四列值得展開。被迫停在舊版 PHP 是中小企業網站很常見的處境:佈景或某個外掛不相容,於是整站卡在多年前的版本,而那個版本早就不再收到安全性更新。我們這台主機上並存 15 個 PHP 版本(ea-php53 到 ea-php85),目的就是讓「先升級到還有更新的版本、再慢慢處理不相容的那個外掛」變成可行的選項,而不是二選一。現行環境是 PHP 8.5.10、MySQL 8.4.9、網頁伺服器 LiteSpeed。關於在虛擬主機上到底能自己控制到什麼程度,我們另外寫在虛擬主機能做到什麼。
六道防線都齊全,仍然擋不掉三件事:密碼太弱、密碼在別的地方外洩、以及沒有人負責按更新。這三件事不在主機端,在流程端。
清乾淨之後的兩件事:更新紀律與搜尋引擎善後
外掛更新:怎麼更新才不會更新到網站壞掉
「不敢更新」通常不是因為懶,是因為曾經更新完網站就白畫面,之後就再也不敢按了。要打破這個循環,需要的是流程,不是勇氣:
- 更新前先有一份當下的備份。不是「主機商有定期備份」那一份,是你按下更新前五分鐘的那一份。有了它,出事的成本從「找人搶救」變成「還原重來」。
- 一次只更新一項,更新完立刻開網站看一眼。一次更新十個外掛然後壞掉,你要花的時間比分十次更新多得多。
- 核心、佈景、外掛分批處理。核心更新影響面最大,單獨一次做完並驗證。
- 把沒在用的外掛刪掉,不是停用。停用的外掛檔案還在網站上,一樣能被直接存取;在已知漏洞的清單裡,停用中的外掛照樣算數。
- 固定的節奏比完美的時機重要。每週或每兩週挑一個固定時段處理,遠比「等有空再說」有效——因為永遠不會有空。
如果這件事在公司裡沒有明確的人負責,那它實際上就是沒人做。這也是我們把 WordPress 的更新與監看放進網站代管範圍的原因:有人固定按更新、出事有人收拾,比買一套安全外掛有用。想知道台灣的 WordPress 主機該怎麼挑,可以看台灣 WordPress 主機怎麼選;各類型主機一年的實際費用,整理在主機租用費用一年多少。
搜尋引擎善後:跟 Google 說你修好了
網站清乾淨、放回線上之後,還有一段尾巴:搜尋引擎那邊的資料不會自己馬上更新。如果被植入的頁面已經被收錄,它們還會留在索引裡一段時間;如果瀏覽器曾經跳出安全警告,那個警告也需要重新檢查才會解除。做法是在 Search Console 裡確認安全性問題的報告已經沒有項目,並且對受影響的網址重新提出檢索要求。
這一段之所以常被漏掉,是因為網站在自己眼裡已經正常了。但客戶是從搜尋結果點進來的,搜尋結果沒更新,對他們來說事情就還沒結束。如果對整體的委外範圍有疑問——設計、主機、代管到底該包到哪裡——可以參考我們的一條龍服務說明,或直接看低價一條龍服務隱藏的網站代管陷阱裡整理的合約面地雷。
常見問題
Q:WordPress 被駭了,可以直接把備份蓋回去就好嗎?
可以,但只做這一步的網站通常會被打第二次。還原只是把網站回到乾淨的狀態,它沒有處理對方是怎麼進來的。實務上的順序是:先保存現場(把被入侵的版本完整打包留存,不要直接刪),再還原到入侵發生之前的還原點,接著把所有密碼換一輪——主機控制台、FTP/SFTP、資料庫、WordPress 後台帳號都要換,然後才把網站放回線上。如果只還原不換密碼,對方手上那組憑證照樣能用;如果只換密碼不還原,留在檔案裡的後門照樣會被叫起來。兩件事要一起做。
Q:WordPress 網站多久備份一次才夠?
看網站多久會產生一次「重做會痛」的資料。純形象官網內容幾個月才動一次,主機商帳號層級的定期備份通常就夠用;有部落格或表單、每週都有新內容的網站,要確保備份頻率比你能接受的資料遺失量更密;電商與會員網站每天都有訂單與註冊,就必須是每日備份,而且資料庫要跟檔案一起備。更關鍵的是還原點能往回追多久:被掛暗連結這類攻擊常常是幾週後才被發現,如果備份只留七天,等你發現時所有還原點都已經是被入侵之後的版本,備份等於不存在。
Q:主機端的防護可以取代外掛更新嗎?
不行,兩者擋的是不同階段的東西。主機端的網站應用防火牆是在請求進到 PHP 之前先過濾掉已知的攻擊特徵,它能擋下大量自動化掃描,但它認得的是攻擊的形狀,不是你網站的漏洞;當某個外掛出現新的漏洞、而攻擊請求看起來跟正常請求沒兩樣時,防火牆沒有理由攔它。反過來說,外掛更新補的是漏洞本身,但補不到「密碼太弱被猜中」或「同一組密碼在別的網站外洩」這類問題。合理的做法是兩邊都做,再加上一份真的還原得回來的備份當最後一道。