本系列文章主旨在於介紹一些漏洞型別產生的基本原理,探索最基礎的解決問題的措施。
關於xquery標準的詳細資訊可以參考 這裡只做簡單介紹。
xquery語言是用於查詢儲存在xml資料庫的資料的語言,它可以看做是xpath語言的乙個超集。主要用到的xquery的功能包括:
還是用員工資訊的例子,employee.xml的內容如下:
<?xml version="1.0" encoding="utf-8"?>
adeli
adel
test@123
admin
taylor
kuang
taylork
taylork@2021
user
假設組裝xquery的查詢的**如下:
string query="for $employee in doc(employee.xml)/employees/employee[username='" +username +"'] return $employee";
查詢「ade」的xquery查詢如下:doc("employee.xml")/employees/employee[username="ade"],返回的結果如下:
taylor
kuang
taylork
taylork@2021
user
和sql注入類似,如果使用者對於username輸入的內容修改為 " or ""=",就會導致查詢語句修改為:doc("employee.xml")/employees/employee[username="" or ""=""],就會查詢獲取所有使用者的資訊。或者簡單一點使用者直接輸入 *,也可以達到一樣的效果。
由上例可知,xquery注入主要是在構建xquery查詢的時候,接收了不可信的資料而且沒有做輸入驗證,並且用於動態構建查詢語句造成的。根據xquery查詢結果使用的不同環境造成的影響也不同,主要有:
洩露系統內部的資料的資訊
如果用於鑑權,可能會出現越權
也可能會導致xml資料庫資料被篡改, 可以設定符合條件的資料被update或者delete
執行惡意**
危害這麼嚴重改如何預防呢?
如果在設計上避免使用不可信資料構建xquery是最好的。
使用最小許可權原則,以防資料被篡改。
輸入驗證,嚴格的輸入驗證對於預防注入問題來說,總是必要的。
xquery的一些擴充套件模組可以用於執行命令,建議盡量避免啟用這些擴充套件模組。
使用引數化查詢,和sql的引數化查詢preparestatement類似,示例**如下:
documentbuilde***ctory docfac = documentbuilde***ctory.newinstance();
docfac.setnamespaceaware(true);
documentbuilder builder = docfac.newdocumentbuilder();
document doc = builder.parse("employee.xml");
string queryname = request.getparameter("username");
xquery query = new xqueryfactory().createxquery(new file("queryemployee.xq"));
map queryfieldvalue = new hashmap();
queryfieldvalue.put("username", queryname);
nodelist nodes = query.execute(doc, null, queryfieldvalue).tonodes();
有時做輸入驗證會失效,例如, 人名字(o'neal)中可能會存在單引號,這是需要轉義特殊字元,需要轉義的字元和轉義方法如下:
字符
轉義
說明&&
有時會被用於引用預定義的實體''
字串開始結束標誌""
字串開始結束標誌
參考:
Flash應用安全系列 5
qq郵箱對於跨域請求過濾不嚴,可能導致使用者郵件被持久劫持 我們知道,在瀏覽器的安全模型中,同源策略 sop same origin policy 是最為基礎的一環,它決定了web上的哪些資源是可以被指令碼訪問的,哪些資源則是被拒絕的。撇開html5中的 access control allow o...
應用安全系列之一 SQL注入
本系列文章主旨在於介紹一些漏洞型別產生的基本原理,探索最基礎的解決問題的措施,不排除有些語言或者系統提供的安全的api可以更好地更直接地解決問題,也不排除可以嚴格地輸入驗證來解決。根據it研究與顧問諮詢公司gartner統計資料顯示,75 的黑客攻擊發生在應用層。而由nist的統計顯示92 的漏洞屬...
iOS安全系列彙總
知乎專欄 書籍推薦 工具篇構建和部署 your first tweak 總結hack必備的命令與工具 後台daemon非法竊取使用者itunesstore資訊 阻止gdb依附 鍵盤快取與安全鍵盤 使用keychain dumper匯出keychain資料 二進位制和資源檔案自檢 ios7的動態庫注入...