WordPress 預設表前綴 wp_ 是自動化攻擊腳本的首選目標。修改前綴能顯著降低 SQL 注入、自動化掃描風險。本文提供從備份到驗證的完整操作流程,包含配置檔、表重命名、選項表與用戶元資料同步更新。
mysqldump --single-transaction --routines --triggers -u user -p dbname > backup_$(date +%F).sqlwp maintenance-mode activate 或建立 .maintenance 檔案wpjam_、xk7f2_(只含字母數字下劃線)// 修改前
$table_prefix = 'wp_';
// 修改後
$table_prefix = 'wpjam_';
在 phpMyAdmin/MySQL 客戶端執行(根據實際表名調整):
RENAME TABLE `wp_commentmeta` TO `wpjam_commentmeta`;
RENAME TABLE `wp_comments` TO `wpjam_comments`;
RENAME TABLE `wp_links` TO `wpjam_links`;
RENAME TABLE `wp_options` TO `wpjam_options`;
RENAME TABLE `wp_postmeta` TO `wpjam_postmeta`;
RENAME TABLE `wp_posts` TO `wpjam_posts`;
RENAME TABLE `wp_terms` TO `wpjam_terms`;
RENAME TABLE `wp_term_relationships` TO `wpjam_term_relationships`;
RENAME TABLE `wp_term_taxonomy` TO `wpjam_term_taxonomy`;
RENAME TABLE `wp_usermeta` TO `wpjam_usermeta`;
RENAME TABLE `wp_users` TO `wpjam_users`;
💡 技巧:用 SQL 生成 SQL,避免手寫遺漏:
SELECT CONCAT('RENAME TABLE `', TABLE_NAME, '` TO `', REPLACE(TABLE_NAME, 'wp_', 'wpjam_'), '`;')
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'your_db' AND TABLE_NAME LIKE 'wp\_%';
option_name 欄位存儲了大量帶前綴的鍵值(如 wp_user_roles、wp_dashboard_quick_press_last_post_id):
UPDATE `wpjam_options`
SET `option_name` = REPLACE(`option_name`, 'wp_', 'wpjam_')
WHERE `option_name` LIKE 'wp\_%';
⚠️ 注意:option_value 中若有序列化陣列(a:1:{s:10:"wp_user";...}),不能直接 REPLACE,會破壞長度標識。需用 PHP 腳本反序列化→替換→序列化,或使用 WP-CLI:
wp search-replace 'wp_' 'wpjam_' wp_options --skip-columns=option_value --precise
meta_key 存儲權限、能力等關鍵前綴資料:
UPDATE `wpjam_usermeta`
SET `meta_key` = REPLACE(`meta_key`, 'wp_', 'wpjam_')
WHERE `meta_key` LIKE 'wp\_%';
同樣注意 meta_value 中的序列化資料問題。
SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='db' AND COLUMN_NAME LIKE 'wp\_%';wp db prefix wpjam_ 一鍵完成(含序列化處理)| 風險 | 後果 | 緩解 |
|---|---|---|
| 序列化資料破壞 | Widget 失效、主題選項重置、外掛報錯 | 用 WP-CLI 或 PHP 腳本處理序列化欄位 |
| 外掛硬編碼前綴 | 舊前綴查詢失敗 | 檢查外掛代碼,聯繫開發者或替換外掛 |
| 多站點網路 | 站點表 wp_2_posts 等需特殊處理 | 逐站點操作,或用專用多站點工具 |
修改表前綴是「深度防禦」而非「絕對安全」。核心價值在於提高攻擊者成本——自動化腳本失效,需人工分析。配合資料庫用戶最小權限、禁用 XML-RPC、限制登入嘗試、WAF 防護,構建纵深防禦體系。