WordPress 活動日誌——追蹤誰改了什麼

網站昨天還好好的,今天首頁的一段文字不見了,或是一個重要外掛被停用導致表單收不到訂單。問了一圈,沒人承認動過手腳。如果你管理的是一個多人共用的 WordPress 網站,這種「找不到兇手」的場景大概不陌生。

WordPress 預設不會幫你記錄誰在後台做了什麼。文章被改、外掛被關、使用者角色被調高權限,這些動作發生過就過了,留不下任何線索。活動日誌(activity log,也叫稽核日誌或安全紀錄)就是補上這塊空白的工具:它把每一筆後台操作連同操作者、時間、來源 IP 一起記下來,讓「誰改了什麼」變成可以查證的紀錄,而不是各說各話。

這篇會說明活動日誌到底記什麼、跟主機的伺服器日誌差在哪、實際要怎麼用它追查一筆異動,以及選外掛時容易被忽略的資料庫負擔、個資合規,還有一個很少人提的盲點——記錄工具本身也可能是漏洞。

WordPress 活動日誌是什麼,跟伺服器日誌差在哪

活動日誌是一份記錄 WordPress 後台「人為操作」的清單。每當有人登入、編輯文章、安裝外掛、修改設定,日誌就新增一筆,內容通常包含操作者帳號、使用者角色、動作描述、發生時間,以及來源 IP 位址。它的目的是回答三個問題:誰做的、什麼時候做的、做了什麼。

很多人會把它跟主機的伺服器日誌(server log)搞混,但兩者層級完全不同。伺服器日誌記的是底層的 HTTP 請求——哪個 IP 在幾點幾分請求了哪個網址、回應了 200 還是 500、用了什麼瀏覽器。它看不到「這次請求其實是某位編輯把文章退回草稿」這種應用層的語意。

換句話說,伺服器日誌告訴你「有一個請求打進來」,活動日誌告訴你「王小明在下午三點把這篇文章從已發佈改成草稿」。排查內容異動、釐清權限變更、追蹤誰停用了外掛,要看的是活動日誌;分析流量來源、找出伺服器錯誤,才回頭翻伺服器日誌。兩者互補,不能互相取代。

為什麼多人共管的網站一定要記活動日誌

只要你的網站不只有你一個人能登入後台,活動日誌就從「有也不錯」變成「應該要有」。台灣很多中小企業的 WordPress 網站,是老闆、行銷、工讀生、外包接案者輪流管理,沒有專責的網管。一旦出事,責任歸屬全靠記憶和猜測,這正是日誌最能發揮價值的場景。

具體來說,記活動日誌解決三類問題。

釐清責任與還原現場:內容被誤刪、設定被改錯時,日誌能直接指出是哪個帳號、在什麼時間動的,省去互相指責。知道改了什麼,也比較容易判斷該怎麼還原。

及早發現入侵跡象:就算網站只有你一個管理員,日誌仍有意義。如果你沒開放註冊,卻冒出新使用者;或是同一個外部 IP 連續登入失敗幾十次,這些都是遭到攻擊的早期訊號。等到網站被掛馬才發現,往往已經來不及。

檢討工作流程:日誌累積一段時間後,回頭看會發現某些錯誤反覆發生——例如同一位同事常把分類設錯。這不只是抓兇手,而是找出流程上該補的環節。

活動日誌該記錄哪些事件

不是所有動作都同等重要。把每一次滑鼠點擊都記下來只會讓日誌變成雜訊,反而埋沒真正該注意的異常。以下幾類事件是判斷網站健康與安全時最有參考價值的,建議優先確認外掛有涵蓋。

  • 登入相關事件:成功登入、登出,以及失敗的登入嘗試。失敗登入特別關鍵——同一個 IP 短時間內反覆失敗,通常是暴力破解在試密碼組合。
  • 使用者帳號與角色異動:新增、刪除使用者,以及最危險的角色權限變更。沒有人的角色該在管理員不知情的狀況下被調高,這是內部越權的頭號訊號。
  • 內容變更:文章與頁面的新增、編輯、刪除、狀態切換(發佈改回草稿等),以及標題、網址結構(slug)這類影響 SEO 的關鍵欄位變動。
  • 外掛與佈景主題操作:安裝、啟用、停用、更新、刪除。這些動作能大幅改變網站功能,裝錯一個還可能讓整站掛掉,是高風險事件。
  • WordPress 核心與全站設定變更:核心版本更新、永久連結(permalink)規則、隱私與評論設定等。設定一改,影響範圍是全站。
  • WooCommerce 相關事件:如果你跑的是購物網站,訂單狀態變更、商品價格與庫存調整也值得記錄,方便日後對帳與釐清爭議。這部分屬於營運稽核而非金流處理,純粹是留下異動軌跡。
  • 多站台網路變更:若你用 WordPress 多站台(multisite),新增或移除子站、調整網路層設定都該納入,因為影響的是整個網路。

用活動日誌追查「誰改了什麼」的實際操作流程

裝了外掛只是第一步,會看會查才有用。多數教學只列出「它能記哪些事件」,卻沒教真正出事時該怎麼從一長串紀錄裡把線索揪出來。以下是一個可以直接照做的排查節奏。

第一、先用時間範圍縮小範圍。你通常知道異動「大約」何時發生——例如「昨天下午同事還說頁面正常,今早就壞了」。先把日誌篩成那段時間,幾百筆瞬間剩下幾十筆。

第二、鎖定事件類型。如果是內容不見了,就只看文章與頁面相關的事件;如果是外掛被關,就篩外掛操作。多數外掛支援依事件分類或嚴重程度(severity)過濾,高風險動作通常會被標成顯眼的等級。

第三、對照操作者與 IP。找到可疑的那筆後,看它是哪個帳號做的、來源 IP 是不是平常那一個。如果某筆關鍵變更來自陌生 IP,或帳號平常根本不負責那塊內容,就要提高警覺——這可能不是手誤,而是帳號被盜。

第四、用關鍵字搜尋串起前後文。鎖定帳號或某個關鍵字(例如被改的頁面標題)後做全文搜尋,把同一個人在那段時間的所有動作攤開來看。很多時候單看一筆看不出問題,把前後幾筆連起來才看得懂事情的來龍去脈。

舉個常見情境:表單突然收不到信。照流程查下去,發現前一晚某帳號停用了負責寄信的外掛,而那個帳號當天剛被另一位同事誤調成管理員權限。日誌一查,誰調的權限、誰停的外掛、幾點做的,全都對得起來,問題根因和責任歸屬一次釐清。

常見的 WordPress 活動日誌外掛怎麼選

市面上的選擇大致分兩種路線,先想清楚需求再挑,比較不會裝錯。

一種是專做日誌的輕量外掛,代表是 Simple History 和 Activity Log。它們安裝後幾乎免設定就開始記錄,介面直覺、免費版就堪用,適合小團隊或只想單純「看誰改了什麼」的網站。缺點是進階篩選、通知、報表這類功能較陽春。

另一種是功能完整的稽核型外掛,代表是 WP Activity Log(前身為 WP Security Audit Log)。它記錄的事件種類最廣,從內容、使用者、外掛主題、核心設定到 WooCommerce 與多站台都涵蓋,還會替不同動作標示風險等級,付費版另有即時通知、報表匯出與使用者連線管理。代價是設定項目多,新手需要花點時間熟悉,部分進階功能要付費。

如果你已經在用綜合型資安外掛,例如 Sucuri、MalCare 這類同時提供防火牆與惡意程式掃描的方案,它們本身就內建活動日誌。好處是防護與紀錄一站搞定;要留意的是部分產品的日誌欄位較精簡,或把詳細紀錄放在付費方案,挑選前最好確認免費版記到什麼程度。

挑選時,除了「記得夠不夠多」,更要看三件事:搜尋與過濾好不好用(出事時找得到才有意義)、紀錄存在哪裡(影響效能,下一節詳談),以及外掛是否持續更新維護。

活動日誌的資料庫負擔與保留期該怎麼設

活動日誌是少數「裝了會持續長大」的外掛,這點很多教學略過不談,卻直接關係到網站效能。每一筆紀錄都要寫進資料庫,網站越活躍、記得越細,資料表就膨脹得越快。以 WP Activity Log 為例,紀錄預設存在自己的資料表(如 wp_wsal_occurrences)裡,雖然設計上盡量降低對效能的影響,但放著不管,幾個月後累積數十萬筆並不罕見。

控制膨脹的關鍵是保留期(retention)設定。多數外掛允許你指定紀錄保留多久,超過就自動清除。WP Activity Log 預設保留三個月,你可以依需求調成六個月或更長。一般中小型網站,三到六個月通常夠用,既能回溯近期問題,又不會讓資料庫無限增長。

設定時把握幾個原則。第一、保留期對齊實際稽核需求,不要憑感覺留「越久越好」——你多久會真的回頭查超過半年前的紀錄?第二、善用排除規則減少雜訊,例如把你自己這個固定管理員的例行操作排除,只專注在其他人的動作。第三、若主機資源有限,保留期就抓短一點,或選擇支援把紀錄存到外部資料庫、雲端的方案,避免日誌跟正常網站查詢搶資料庫資源。

記錄 IP 與個資時要注意的合規問題

活動日誌會記下使用者帳號與來源 IP,而 IP 位址在多數個資規範下被視為個人資料,這點在中文教學裡幾乎沒人提,卻是該放在心上的環節。台灣的個人資料保護法、以及若你的網站服務歐盟訪客會碰到的 GDPR,都對個資的蒐集與保存有要求。

實務上不必因此不敢用日誌,而是用得合規。多數成熟的稽核外掛提供對應功能:IP 匿名化或雜湊處理,讓你保留「同一來源」的判斷力卻不留完整 IP;資料保留期上限,避免個資無限期囤積;以及應使用者要求刪除特定紀錄的能力。

幾個可以落實的做法:在隱私權政策裡載明你會記錄後台操作與 IP、保存多久、目的為何;保留期設成符合稽核需要的最短期間;如果不需要精確 IP 來追查攻擊,就開啟匿名化。記錄是為了安全,不是為了囤積個資,這條界線要拿捏好。

活動日誌外掛本身也要更新

最容易被忽略的盲點是:用來提升安全的工具,本身也可能是漏洞。活動日誌外掛權限高、又會把使用者輸入的資料呈現在後台頁面,一旦程式碼有疏漏,反而可能成為攻擊入口。

這不是假設。WP Activity Log 在 5.2.1 以前的版本就被揭露存在一個未經驗證的儲存型跨站腳本(stored XSS)漏洞,編號 CVE-2024-10793,CVSS 評分屬中等風險。攻擊者可透過特定參數注入惡意腳本,而這段腳本有機會在管理員開啟日誌檢視頁面時執行——也就是說,正當你想查紀錄、保護網站時,反而觸發了攻擊。官方在 5.2.2 版修補了這個問題。

教訓很直接:日誌外掛要跟核心、其他外掛一樣納入定期更新,看到安全性更新別拖。同時,這也提醒選外掛時要看「是否持續維護、發現漏洞後修補得快不快」,一個長期沒更新的日誌外掛,記再多事件都是把網站暴露在風險裡。

從找不到兇手,到每一筆異動都查得到出處,活動日誌補上的是 WordPress 後台最關鍵的一塊責任軌跡。先確認你的網站有在記錄登入、權限、內容、外掛這幾類核心事件,挑一個搜尋好用、持續維護的外掛裝起來,把保留期設成符合稽核需求的長度,並順手處理好 IP 匿名化。

裝好之後別把它當擺設——養成出事先翻日誌的習慣,並把日誌外掛納入定期更新清單。真正讓網站安全的,不是裝了多少工具,而是有沒有人會去看、去用這些紀錄。

相關文章
標籤: 稽核日誌, 使用者操作紀錄, WP Activity Log, 網站安全, WordPress 活動日誌