WordPress資料庫是駭客最喜歡攻擊的目標,許多人在安裝WordPress時忘記更改資料庫前綴,採用的是默認前綴wp_,這使駭客很容易進行大規模攻擊。 保護資料庫的最機智的辦法就是更改資料庫表前綴。
如果你還沒GreenGeeks等國外的wordpress託管主機會在創建網站時,會設置隨機的表前綴,無需你再修改,不過以防萬一你也可以按下文的方法在wp-config.php檔中確認一下表前綴;而如果你是在伺服器(譬如Linode、阿裡雲)上自己搭建的網站,並且已經建好了,那麼,請按照下文的方法修改資料庫表前綴。
準備工作
請在操作之前備份你的網站資料庫,並選擇網站在線使用者少的時間段,修改期間,最好將網站開啟維護模式,如果網站使用者很少,也可以不用開啟維護模式,整個修改過程大約在10分鐘以內。
更改wp-config.php檔中的表前綴
找到網站根目錄中的wp-config.php檔並編輯它,在檔中找到下一段中所示的代碼行,將其中的表前綴從wp_更改為自定義內容(由字母、數位和短下劃線構成),譬如:a1b2c3_
$table_prefix = 'wp_';
修改後的範例:
$table_prefix = 'a1b2c3_';
更改所有資料庫表的前置名稱
在網站的運維面板(譬如Cpanel、寶塔)中,找到database或資料庫相關的欄目,進入資料庫的管理面板,如果有phpMyAdmin功能入口,就使用phpMyAdmin訪問你的資料庫,然後按下面的步驟,將表前綴更改為我們剛才在wp-config.php檔中的新的錶前綴
- 點擊左側選單中的資料庫名稱以展開所有表。
- 在右側,全選所有以wp_開頭的表
- 單擊with selected,在下拉菜單中選擇replace table prefix。
- 在“From”欄位中輸入wp_,在“ To”字段中輸入新的表前綴,在本示例中為a1b2c3。
- 按兩下continue進行更改,修改完成後刷新當前頁面。
修改options表
請在左側菜單中的搜索框內輸入options並回車,找到options表,在本示例中,數據表名稱為a1b2c3_options,我們需要找到本表的options_name一列中使用了wp_作為前綴的行,以便我們將其中的wp_替換成新的前綴,請點擊頁面中表格右上方的[edit line],然後將代碼WHERE ‘option_name’ LIKE ‘%wp_%’黏貼到已有的代碼之後,如果按照本文示例,黏貼完成後將是如下效果,然後點擊Go按鈕執行搜索
SELECT * FROM `a1b2c3_options` WHERE `option_name` LIKE '%wp_%'
搜索後將看到一條記錄,其中option_name是wp_user_roles,請按兩下對應單元格後修改,修改完成後將是 新前綴_user_roles,譬如本示例中是:a1b2c3_user_roles。
如果你的網站時wordpress多網站,你將可能不止1個option表,記得每個options表都需要修改。
修改UserMeta表
接下來,我們需要在usermeta中搜索所有使用wp_作為前綴的欄位,因此我們可以替換它。 為此,請使用以下SQL查詢:
請在左側菜單中的搜索框內輸入usermeta並回車,找到usermeta表,在本示例中,數據表名稱為a1b2c3_usermeta,我們需要找到本表的meta_key一列中使用了wp_作為前綴的行,以便我們將其中的wp_替換成新的前綴,請點擊頁面中表格右上方的[edit line],然後將代碼WHERE ‘meta_key’ LIKE ‘%wp_%’黏貼到已有的代碼之後,如果按照本文示例,黏貼完成後將是如下效果,然後點擊Go按鈕執行搜索
SELECT * FROM `a1b2c3_usermeta` WHERE `meta_key` LIKE '%wp_%'
搜索後將看到多條記錄,並且不同網站根據外掛程式安裝的不同而不同,請逐一將meta_key中的wp_前綴換為新前綴,但要注意的是,要仔細區別meta_key的含義,譬如:若你安裝了wp rocket外掛程式,則會看到一條包含wp_rocket的記錄,則此處的wp_不需要修改。 如果看到的是wp-而不是wp_,那麼也不需要修改。
測試網站
至此,你可以測試網站了,使用新瀏覽器或無痕模式的瀏覽器,逐一打開網頁前臺和後台,進行多次訪問和操作,如若正常,則說明修改成功。 如若不正常,又無法界定問題所在,請先恢復資料庫備份以及wp-config.php檔中的表前綴,確保網站可以訪問,然後可以通過複製網站的方式去排查問題所在。
結語:我通過上文教程成功修改了多個網站,有簡單的網站、也有複雜的網站,感謝如下教程給予我的説明: