如何防範 SQL 資料隱碼攻擊

強制執行最低權限存取、清理使用者輸入以及限制資料庫程序有助於防止 SQL 資料隱碼攻擊和後續的資料外洩。

學習目標

閱讀本文後,您將能夠:

  • 說明 SQL 資料隱碼攻擊的運作方式
  • 查看阻止 SQL 資料隱碼攻擊的最佳做法
  • 瞭解 Cloudflare 如何協助防止 SQLi 攻擊

相關內容


想要繼續瞭解嗎?

訂閱 TheNET,這是 Cloudflare 每月對網際網路上最流行見解的總結!

請參閱 Cloudflare 的隱私權政策,了解我們如何收集和處理您的個人資料。

複製文章連結

SQL 資料隱碼攻擊如何運作

結構化查詢語言插入 (SQLi) 是一種程式碼插入攻擊,允許攻擊者擷取、操縱或破壞 SQL 資料庫中的敏感資訊。這些攻擊透過將專門的命令插入 SQL 查詢欄位來實現;執行時,這些命令可能使攻擊者能夠假冒合法使用者的身分、檢視或擷取受保護的資料,甚至獲得伺服器的 root 存取權限。

通常,攻擊者會透過利用應用程式設計介面 (API) 中的漏洞來執行 SQLi,這些漏洞無法正確區分合法程式碼和不受信任的程式碼。如果無法偵測更改的命令或查詢,這些 API 可用於執行惡意要求,例如繞過 Web 應用程式防火牆 (WAF)驗證措施。

通常,SQLi 使用以下三種方法之一執行:

  1. 頻內 SQL 資料隱碼攻擊使用單一通訊通道來發動和完成攻擊。頻內 SQLi 的常見類型包括 error-based SQLi(錯誤訊息幫助攻擊者識別有關底層資料庫的關鍵資訊)和 union-based SQLi(攻擊者使用 UNION SQL 運算子來發現資料庫中的漏洞)。這是 SQLi 最簡單且最常見的形式。
  2. 相較之下,頻外 SQL 資料隱碼攻擊不允許攻擊者使用相同的通訊通道來發動和完成攻擊。遭入侵的應用程式必須要能夠將資料滲透到攻擊者控制範圍內的遠端端點(通常透過 DNS 或 HTTP 請求)。這是最困難且最不常見的 SQLi 形式。
  3. 推理 SQL 資料隱碼攻擊(也稱為盲 SQLi)要求攻擊者向目標伺服器傳送負載,以瞭解如何利用它。這些通常採用以下兩種形式之一:blind Boolean-based SQLi(攻擊者使用 true-false 查詢來強制伺服器產生不同的回應)或 blind time-based SQLi(攻擊者可以透過伺服器回應時間的變化推斷出相同的資訊)。這通常比頻內 SQLi 需要更多時間才能完成,但同樣具有破壞性。

要查看良性和惡意 SQL 查詢的真實範例,請閱讀什麼是 SQL 資料隱碼攻擊?

遭到攻擊?
全面防禦網路攻擊

如何防範 SQL 資料隱碼攻擊

雖然 SQL 資料隱碼攻擊是最普遍的 API 威脅之一,但透過正確的預防策略可以有效避免。防止 SQL 資料隱碼攻擊的有用方法包括限制資料庫程序、清理資料庫輸入以及強制執行最低權限存取。

限制資料庫程序和程式碼

SQL 資料隱碼攻擊很大程度取決於攻擊者操縱資料輸入和資料庫功能的能力。透過限制這些輸入並限制可以執行的資料庫程序的類型,組織可以最大限度地降低未經授權或惡意查詢的風險。這樣做的方法包括:

  • 強制執行準備陳述式和參數化查詢:準備陳述式定義可接受的 SQL 程式碼,然後為傳入查詢設定特定參數。任何惡意 SQL 陳述式都被歸類為無效資料輸入,而不是可執行命令。
  • 使用預存程序:與準備陳述式一樣,預存程序是準備好的、可重複使用的 SQL 陳述式,可以從資料庫中擷取,並防止惡意方直接在資料庫本身上執行程式碼。

驗證和清理資料庫輸入

應定期監視、驗證和清理使用者對任何 SQL 資料庫的輸入,以消除惡意程式碼。輸入驗證確保根據預定標準對資料進行適當檢查和格式化,而輸入清理則透過移除無效或不安全的字元並根據需要重新設定格式來修改(或「清理」)輸入。確保輸入驗證的方法包括:

  • 建立允許清單:允許清單可以幫助定義有效的使用者輸入,資料庫可以根據這些輸入檢查(並拒絕)出現異常的傳入查詢。例如,特殊字元和擴充 URL 是兩種類型的使用者輸入,攻擊者可以利用它們來收集有關資料庫的資訊(在執行惡意查詢之前)。限制使用這些輸入有助於最大限度地減少攻擊的可能性。
  • 轉義使用者提供的輸入:組織也可以選擇轉義(即視為輸入,而不是命令或條件)所有使用者提供的輸入,以便特定字元或單字不能用於形成惡意請求。

強制執行最小權限存取

最低權限存取原則是僅向使用者提供其角色所需的受保護資源的存取權限。例如,這可能意味著限制被授予資料庫管理員層級權限的使用者數量,甚至為使用者提供稍後可以撤銷的臨時管理員層級存取權限。

在基於角色的層級上限制使用者存取也有助於最大限度地減少入侵事件的影響,因為使用被盜憑證入侵資料庫的攻擊者檢視、修改、竊取或銷毀受保護資料的能力也會受到類似的限制。出於同樣的原因,組織應該限制跨多個網站和應用程式對資料庫的共用存取。

Cloudflare 如何協助防止 SQL 資料隱碼攻擊

Cloudflare 透過強大的應用程式和 API 安全產品組合幫助組織提高抵禦 SQLi 攻擊的能力:

  • Cloudflare WAF 監控潛在 SQL 漏洞的流量模式,偵測繞過和攻擊類型的變化,並使用進階的機器學習技術使 WAF 規則集適應不斷發展的攻擊方法
  • Cloudflare D1 是一個無伺服器 SQL 資料庫,它與 Workers 原生整合,以實作準備陳述式並防止使用者修改或刪除資料庫