防御方式
數據提交到服務器上端,在服務端正式處理這批數據之前,對提交數據的合法性進行驗證。
檢查提交的數據是否包含特殊字符,對特殊字符進行編碼轉換或替換、刪除敏感字符或字符串,如過濾[] ‘ “ and or 等全部過濾,像單雙引號這類,可以對這類特殊字符進行編碼轉換或替換
對于系統出現的錯誤信息,以IE錯誤編碼信息替換,屏蔽系統本身的出錯信息或者用統一的報錯頁面代替(如updataxml()這類)
參數化XPath查詢,將需要構建的XPath查詢表達式,以變量的形式表示,變量不是可以執行的腳本。如下代碼可以通過創建保存查詢的外部文件使查詢參數化:
declare variable $loginID as xs:string external;
declare variable $password as xs:string external;
//users/user[@loginID=$loginID and@password= $password]通過MD5、SSL等加密算法,對于數據敏感信息和在數據傳輸過程中加密,即使某些非法用戶通過非法手法獲取數據包,看到的也是加密后的信息。 總結下就是:限制提交非法字符,對輸入內容嚴格檢查過濾,參數化XPath查詢的變量。
總結下就是:限制提交非法字符,對輸入內容嚴格檢查過濾,參數化XPath查詢的變量
補充:
什么是 XPath 注入攻擊?XPath 注入攻擊是指利用 XPath 解析器的松散輸入和容錯特性,能夠在 URL、表單或其它信息上附帶惡意的 XPath 查詢代碼,以獲得權限信息的訪問權并更改這些信息。 XPath 注入攻擊利用兩種技術,即 XPath 掃描和 XPath 查詢布爾化。通過該攻擊,攻擊者可以控制用來進行 XPath 查詢的 XML 數據庫。這種攻擊可以有效地對付使用 XPath 查詢(和XML數據庫)來執行身份驗證。
xpath注入防御方法有:
數據提交到服務器上端,在服務端正式處理這批數據之前,對提交數據的合法性進行驗證。
檢查提交的數據是否包含特殊字符,對特殊字符進行編碼轉換或替換、刪除敏感字符或字符串,如過濾[] ‘ “ and or 等全部過濾,像單雙引號這類,可以對這類特殊字符進行編碼轉換或替換。
對于系統出現的錯誤信息,以IE錯誤編碼信息替換,屏蔽系統本身的出錯信息或者用統一的報錯頁面代替(如updataxml()這類)。
參數化XPath查詢,將需要構建的XPath查詢表達式,以變量的形式表示,變量不是可以執行的腳本。
通過MD5、SSL等加密算法,對于數據敏感信息和在數據傳輸過程中加密,即使某些非法用戶通過非法手法獲取數據包,看到的也是加密后的信息。 總結下就是:限制提交非法字符,對輸入內容嚴格檢查過濾,參數化XPath查詢的變量。
什么是XPath
XPath 即為 XML 路徑語言,是 W3C XSLT 標準的主要元素,它是一種用來確定 XML(標準通用標記語言的子集)文檔中某部分位置的語言。
XPath 基于 XML 的樹狀結構,有不同類型的節點,包括元素節點,屬性節點和文本節點,提供在數據結構樹中找尋節點的能力,可用來在 XML 文檔中對元素和屬性進行遍歷。
XPath注入原理
XPath 注入利用 XPath 解析器的松散輸入和容錯特性,能夠在 URL、表單或其它信息上附帶惡意的 XPath 查詢代碼,以獲得高權限信息的訪問權。
XPath注入類似于SQL注入,當網站使用未經正確處理的用戶輸入查詢 XML 數據時,可能發生 XPATH 注入,由于Xpath中數據不像SQL中有權限的概念,用戶可通過提交惡意XPATH代碼獲取到完整xml文檔數據。
防御方法
過濾字符是必須的,比如[、]、轉義 ‘、and、or等等。
過濾不需要的函數:name()、count() 等等。
加密/Hash:既然 XPath 注入會導致 XML 數據泄露,所以對敏感信息的加密是必須的。這個方法還有一個額外的好處:使得惡意的字符失效。比如對密碼 MD5 的話,就意味著密碼這個點沒法插入單引號來破壞語句了,因為單引號會進入md5()函數計算。
屏蔽錯誤信息。
參數化 XPath 查詢。這個因編程語言而異。
驗證是否包含特定的 XPath 函數,可以過濾掉一些 XPath 函數,以提高安全性,當然了不能以犧牲用戶體驗或影響用戶正常使用為前提。
驗證是否包含特定的 XPath 函數,可以過濾掉一些 XPath 函數,以提高安全性,當然了不能以犧牲用戶體驗或影響用戶正常使用為前提。
什么是XPath
XPath 即為 XML 路徑語言,是 W3C XSLT 標準的主要元素,它是一種用來確定 XML(標準通用標記語言的子集)文檔中某部分位置的語言。
XPath 基于 XML 的樹狀結構,有不同類型的節點,包括元素節點,屬性節點和文本節點,提供在數據結構樹中找尋節點的能力,可用來在 XML 文檔中對元素和屬性進行遍歷。
XPath注入原理
XPath 注入利用 XPath 解析器的松散輸入和容錯特性,能夠在 URL、表單或其它信息上附帶惡意的 XPath 查詢代碼,以獲得高權限信息的訪問權。
XPath注入類似于SQL注入,當網站使用未經正確處理的用戶輸入查詢 XML 數據時,可能發生 XPATH 注入,由于Xpath中數據不像SQL中有權限的概念,用戶可通過提交惡意XPATH代碼獲取到完整xml文檔數據。
防御方法
過濾字符是必須的,比如[、]、轉義 ‘、and、or等等。
過濾不需要的函數:name()、count() 等等。
加密/Hash:既然 XPath 注入會導致 XML 數據泄露,所以對敏感信息的加密是必須的。這個方法還有一個額外的好處:使得惡意的字符失效。比如對密碼 MD5 的話,就意味著密碼這個點沒法插入單引號來破壞語句了,因為單引號會進入md5()函數計算。
屏蔽錯誤信息。
參數化 XPath 查詢。這個因編程語言而異。