如何保護您的 WordPress 網站免受 SQL 注入
已發表: 2022-03-09WordPress 是最常用的網站構建平台之一,因為它具有廣泛的潛在應用。 您可以建立一個在線商店、託管一個關於您最喜歡的愛好的博客、通過論壇創建一個社區或代表一家大公司。
但是,無論您如何使用它,主要責任是保護您的網站免受黑客攻擊。 這就是為什麼了解如何防止結構化查詢語言 (SQL) 注入攻擊很重要的原因。
好消息是,您可以採取很多措施來保護您的 WordPress 網站免受這種惡意代碼的侵害。 學習如何檢測、刪除和防止 SQL 注入可以幫助您有效地保護您的寶貴數據,並使您不易受到攻擊。
什麼是 SQL 注入,它是如何工作的?
要了解注入的工作原理,首先了解什麼是 SQL 會很有幫助。 這是數據庫開發中使用的通用語言。
您的網站使用它從您的數據庫中檢索關鍵信息並生成動態內容。 一些 SQL 數據庫包括 MySQL(WordPress 站點)、MongoDB 和 SQL Server。
您的 WordPress 網站使用數據庫來管理您網站的基本數據和內容,例如您的頁面、帖子和評論。 它將這些信息排列在表格中。

您的數據庫是存儲最敏感數據的地方。 因此,任何暴露它的攻擊都可能產生嚴重的後果。
SQL 注入 (SQLI) 是網絡犯罪分子用來滲透和操縱 WordPress 數據庫的一種黑客攻擊方法。 本質上,黑客可以利用網站後端編碼中的漏洞,將惡意代碼插入數據輸入字段。
此代碼允許不法分子通過使用查詢字符串、cookie 和 <input> 元素的 Web 請求對數據庫服務器執行 SQL 命令。 這意味著他們可以創建、訪問、更改和刪除 WordPress 數據庫中的數據。
有許多不同的入口點可以發生這種情況。 最常用的輸入字段包括註冊、登錄和聯繫表單,以及搜索欄和購物車。
假設您的網站上有一個表單,訪問者可以在其中輸入他們的電話號碼。 網絡犯罪分子可以使用該輸入字段插入請求管理員用戶名和密碼的惡意代碼。
SQL 注入的類型
有幾種不同類型的 SQL 注入。 一類是所謂的“帶內”。 這是最簡單的注入類型,包括基於錯誤的攻擊。
通過這種技術,黑客使用注入來獲取有關數據庫結構和表名的詳細信息。 例如,錯誤消息可能會提供包含在查詢中的表名。 然後黑客可以使用這些信息來創建新的攻擊。
另一種類型是所謂的“盲 SQL 注入”。 這是攻擊者向數據庫發送各種查詢以了解站點如何分析響應的時候。 這樣做可以幫助他們探測對 SQL 查詢的響應以識別潛在的漏洞,並請求數據庫將數據傳輸到外部源。
SQL 注入有多常見?
不幸的是,SQL 注入攻擊很普遍。 事實上,根據 Akamai 發布的一份報告,在 2017 年至 2019 年間,大約三分之二的軟件應用程序攻擊歸因於 SQL 注入。
另一份 2020 年漏洞統計報告還顯示,SQL 注入佔最常見關鍵漏洞的 42%。
SQL 注入對於任何使用 SQL 數據庫的網站都是可能的,例如基於 WordPress 的網站,尤其是那些具有聯繫表單和搜索框等輸入字段的網站。
為什麼 SQL 注入很危險
SQL 注入是危險的,原因有很多。 首先,它們讓黑客有機會竊取敏感信息,例如您的登錄憑據或客戶數據。
黑客不僅可以使用 SQL 注入來獲取和竊取數據,還可以使用它來刪除這些數據。 這意味著您有丟失用於運行您的網站的私人和重要信息的風險。
此外,還存在聲譽受損和收入損失的風險。 數據洩露可能會損害您的業務,並且您可能會失去客戶或粉絲的信任。
此外,這些攻擊可能會導致 Google 將您的網站列入黑名單。 如果您最終出現在此列表中,許多潛在訪問者將收到您的網站不安全的警告。 這些人中的大多數會回頭,並且可能永遠不會回來。 此外,谷歌還將大幅降低您的搜索排名——這可能會導致自然流量的重大長期損失,而且難以恢復。
如何檢測 SQL 注入
有一些跡象可能表明您已成為 SQL 注入攻擊的受害者。 一是您突然通過您網站的聯繫表收到大量電子郵件。 另一個指標是您是否收到奇怪的彈出窗口、廣告和錯誤消息,尤其是當它們將您重定向到看似粗略的網站時。
不幸的是,SQL 注入攻擊的跡象並不總是那麼明顯。 正如我們前面提到的,有時黑客想要使用注入來竊取信息,而不是破壞您的網站。 因此,他們可能會使用更微妙的方法,使檢測更加困難。
SQL注入檢測和掃描工具
確定您是否已成為目標的唯一方法是在您的網站上進行掃描。 幸運的是,有多種在線工具可以幫助您檢測 WordPress 網站上的 SQL 注入。
例如,您可以使用 Pentest Tools 對您的網站進行兩次免費掃描。

有兩種選擇:輕度掃描或全面掃描。 對於後者,您需要升級到付費計劃。 只需輸入您網站的 URL,然後單擊掃描目標按鈕。 如果存在任何漏洞,掃描將顯示它們。
如何從您的 WordPress 網站中刪除 SQL 注入
1.恢復備份
刪除 SQL 注入的最佳選擇是恢復站點的備份。 如果您使用的是 Jetpack Backup,您所要做的就是使用活動日誌來確定攻擊發生的時間,然後從該點之前恢復備份。 您的網站將恢復到被黑之前的狀態。
但是,重要的是要注意,在某些情況下,SQL 注入會隨著時間的推移一點點進行。 您可能需要返回很遠的地方才能找到干淨的備份,這可能會導致數據丟失。
儘管恢復備份可能會使您的網站重新啟動並運行,但如果敏感數據被盜,您仍然必須處理違規的後果。
2.使用網站清潔服務
另一種選擇是使用第三方網站清理服務來掃描您的網站並修復任何 SQL 注入。 Sucuri 是一種選擇——只需將您的網站提交給他們的團隊,讓他們處理其他所有事情。 由於他們是專家,因此他們可以比普通開發人員更有效地從您的數據庫中刪除惡意軟件。
3.自己移除注射劑
最後,如果您有管理和使用 MySQL 的經驗,您可以手動清理數據庫。 但請注意,這是一種高級技術,如果您不知道自己在做什麼,那麼進行任何更改都可能導致問題。
未來如何防止 SQL 注入
沒有辦法確保您的網站永遠 100% 安全,但您可以採取一些措施來最大程度地降低受到攻擊的風險。 讓我們看一下可用於防止 WordPress 中的 SQL 注入的八種方法。
1. 驗證(或清理)您的數據
在 WordPress 中防止 SQL 注入的關鍵是保護任何可用於在您的網站上輸入數據或內容的輸入字段。 這包括評論部分和表格。 因此,在提交時驗證和清理輸入這些字段的數據非常重要。
輸入驗證和清理可讓您檢查用戶提交的命令。 消毒甚至可以讓您更改命令。 這是確保這些命令不包含惡意代碼或字符串的有效方法。
驗證確保在處理請求之前以表單輸入的信息與請求的格式匹配。 例如,如果您有一個電子郵件地址的輸入字段,如果不存在“@”符號,則不會驗證數據。
為表單數據創建驗證的最簡單方法是為表單建立規則。 這樣做的過程將取決於您使用的特定插件。 例如,如果您使用高級版的強大表單,您可以添加自己的自定義輸入掩碼格式 對於文本字段。

添加輸入格式要求可以限制 SQL 注入的風險。 清理有助於確保輸入的數據在經過驗證後可以安全處理。

大多數 WordPress 表單插件會自動清理表單數據。 但是,您可以添加額外的安全措施。 考慮使用下拉菜單和多項選擇選項,而不是開放式答案。 您還可以限制使用特殊字符。
2.安裝WordPress安全工具
Jetpack 的 WordPress 安全插件可以監控您的站點是否存在可能導致 SQL 注入的漏洞。 這使您有機會在有人利用之前修復它們。
通過停機時間監控,您會在站點出現故障的那一刻知道,以便快速做出反應。 通過實時備份,您可以完全恢復您的站點。
它還提供安全工具,例如:
- 對您的 WordPress 文件進行惡意軟件掃描,以及一鍵修復大多數問題
- 反垃圾郵件解決方案可保護您的評論和聯繫表格
- 蠻力攻擊保護,讓黑客遠離
3. 隨時更新您的網站和數據庫
使用過時的軟件和工具可能會在您的網站上引入一系列漏洞,供黑客利用。 這就是為什麼確保始終保持 WordPress 網站更新很重要的原因。
目前,將近一半的 WordPress 安裝沒有使用最新版本。 因此,您可能需要考慮啟用自動更新,以確保您始終運行最新版本的 WordPress。
要對核心更新執行此操作,您可以導航到 wp-config.php文件位於您網站的根目錄中。 接下來,將以下代碼段複製並粘貼到文件中:
define( 'WP_AUTO_UPDATE_CORE', true );
您可以通過導航到插件為您的插件啟用自動更新 管理儀表板中的屏幕。 然後,點擊 從最右列啟用自動更新。

為了最大限度地減少漏洞,我們建議從您的站點中刪除所有未使用的插件或主題。 更新 SQL 版本也是明智之舉。 如果您將 cPanel 用於您的主機控制面板,您可以從儀表板更新您的 MySQL 軟件。 根據您的託管服務提供商,您可能能夠啟用自動 SQL 更新。
4. 更改您的 WordPress 數據庫前綴
默認情況下,每次安裝 WordPress 時,CMS 都會使用“wp_”作為其數據庫前綴。 我們強烈建議將其更改為其他內容,因為黑客可以使用它通過 SQL 注入來利用漏洞。
在開始之前,您應該備份您的數據庫。 這樣,如果出現任何問題,您就可以恢復一個安全的版本。
接下來,通過 FTP 客戶端或主機的文件管理器連接到您的站點並瀏覽到位於您站點根目錄中的wp-config.php文件。 在文件中,查找 table_prefix 行,然後將“wp_”更改為其他內容:
$table_prefix = 'wp_a12345_';
完成後,保存文件。 就是這樣!
5.使用防火牆
您可以用來防止 SQL 注入的另一種策略是安裝防火牆。 這是一個網絡安全系統,可幫助您監視和控制進入 WordPress 站點的數據。 這可以捕獲並過濾掉惡意代碼,包括來自 SQL 注入攻擊的代碼。
您可以使用多種 WordPress 防火牆工具。 一些流行的選項包括 Wordfence 和 Sucuri。 這些工具不會阻止攻擊者提交命令,但它們可以幫助阻止他們實際訪問您的站點。
6.隱藏您正在使用的WordPress版本
公開您的 WordPress 網站版本可以使攻擊者更容易利用已知漏洞,因為每個版本都有自己的集合。 因此,為了保護您的網站,我們建議您隱藏您正在使用的版本。
這樣做既快速又簡單。 要開始,只需複制以下代碼片段:
remove_action('wp_head', 'wp_generator');
接下來,導航到您當前 WordPress 主題的functions.php文件。 您可以直接從 WordPress 的主題編輯器、使用 FTP 客戶端或使用主機的文件管理器來執行此操作。 將代碼粘貼到文件中,然後保存更改。
7.消除不必要的數據庫功能
WordPress 數據庫的功能越多,就越容易受到攻擊。 為了最大限度地降低 SQL 注入的風險,請考慮規範化您的數據庫並消除任何不必要的功能和內容。
簡而言之,數據庫規範化是指組織數據的過程。 這樣做的目的是消除數據庫中的任何冗餘數據,並確保所有數據依賴關係都有意義。 您可以通過將數據庫置於第一範式來做到這一點。
如果您想要一個對初學者更友好的選項來清理您的 WordPress 數據庫,您可以使用插件。 有一些可靠的選項可供選擇,例如 WP-Optimize。
這個免費增值插件可幫助您清理數據庫,而無需通過 phpMyAdmin 手動運行 SQL 命令。 相反,您可以使用它直接從 WordPress 儀表板優化您的數據庫。

它會從您的數據庫中刪除所有不必要的信息,包括垃圾和未經批准的評論。 WP-Optimize 還允許您通過單擊對 MySQL 數據庫表進行碎片整理。
8.限制用戶訪問和權限
您可以在您的網站上為 WordPress 用戶分配各種角色。 這些範圍可以是從訂閱者到管理員的任何地方。 對於每個角色,您可以控制授予多少訪問權限以及授予他們哪些“能力”。
為了幫助加強您的安全性,最好限制具有完全管理員訪問權限和用戶權限的角色數量。 能夠更改和輸入數據的人越少,您面臨 SQL 注入攻擊的可能性就越小。
要自定義 WordPress 中的用戶角色和權限,您可以導航到用戶 → 所有用戶。

然後,單擊要限制訪問和權限的用戶名稱下方的編輯鏈接。 在下一個屏幕上,您可以使用下拉角色菜單更改他們的角色。
在管理您的 WordPress 用戶角色時,我們還建議刪除所有不再使用的帳戶。 消除過時的角色可以最大限度地減少您的漏洞。
9.避免使用無效插件
無效插件是被盜的高級工具,免費提供。 雖然它們看起來很划算,但您不僅會因為不支付他們的工作而傷害原始開發人員,而且還會冒被黑客入侵的風險。
無效插件通常充滿惡意代碼和後門,使黑客可以輕鬆進入您的網站。 不惜一切代價避免使用它們,而是使用信譽良好的插件。
保護您的 WordPress 網站免受 SQL 注入
為了保護您的網站和數據免受網絡犯罪分子的威脅,了解用於訪問您網站的一些最常用方法非常重要。 當談到加強數據庫的安全性時,這意味著精通 SQL 注入。
正如我們在這篇文章中所討論的,SQL 注入可能會對您的 WordPress 網站產生破壞性影響,從敏感數據的暴露到內容和收入的損失。 幸運的是,您可以採取一些步驟來檢測、刪除和防止注入攻擊。
沒有網站是完全安全的,但是通過遵循上述提示和技術,您可以顯著降低成為 SQL 注入受害者的機會。