dc.contributor.advisor | 陳恭 | zh_TW |
dc.contributor.advisor | Chen, Kung | en_US |
dc.contributor.author (作者) | 王瑛瑛 | zh_TW |
dc.contributor.author (作者) | Wang, Ying Ying | en_US |
dc.creator (作者) | 王瑛瑛 | zh_TW |
dc.creator (作者) | Wang, Ying Ying | en_US |
dc.date (日期) | 2011 | en_US |
dc.date.accessioned | 12-四月-2012 14:12:13 (UTC+8) | - |
dc.date.available | 12-四月-2012 14:12:13 (UTC+8) | - |
dc.date.issued (上傳時間) | 12-四月-2012 14:12:13 (UTC+8) | - |
dc.identifier (其他 識別碼) | G0097971015 | en_US |
dc.identifier.uri (URI) | http://nccur.lib.nccu.edu.tw/handle/140.119/52635 | - |
dc.description (描述) | 碩士 | zh_TW |
dc.description (描述) | 國立政治大學 | zh_TW |
dc.description (描述) | 資訊科學學系 | zh_TW |
dc.description (描述) | 97971015 | zh_TW |
dc.description (描述) | 100 | zh_TW |
dc.description.abstract (摘要) | 資料隱碼攻擊(SQLIA)是一種Web應用程式弱點,這個弱點為Web客戶端輸入值隱藏攻擊字串而改變了動態產生的SQL語句結構。根據OWASP(Open Web Application Security Project)2010年的網站風險評鑑報告,資料隱碼攻擊被列為最嚴重的Web應用程式風險。資料隱碼攻擊的弱點可能讓攻擊者能夠直接存取資料庫,導致敏感性資料遭到修改或竊取,有經驗的攻擊者,甚至可以利用一個資料隱碼攻擊的漏洞,而接管整個應用系統。 在本篇論文中,我們基於資料隱碼攻擊的原理實作一個自動化的防禦工具。我們的工具以SQL語句剖析結合剖面技術實作,利用窮舉法,動態分析及動態監控應用程式所執行的SQL語句,毋須開發者學習新的程式寫法或修改應用程式,即能將防禦機制套用於應用程式(原始碼及中間碼),並透過使用者介面設定可動態調整防禦監控的範圍,提供一個有效保護WEB應用程式的資料隱碼攻擊防禦機制。 | zh_TW |
dc.description.abstract (摘要) | SQL injection attack (SQLIA) is a type of attack on web applications that exploits the fact that input provided by web clients may be directly included in the dynamically generated SQL statements. According to the WASP Foundation, injection attacks, particularly SQL injection, were the most serious web application vulnerability type in 2010. By using SQLIA, an attacker may directly access the database underlying a web application and modify or expose sensitive information. A proficient attacker can even use an SQLIA to completely compromise the host system. In this thesis, we study SQL injection attacks and develop a fully automated, configurable tool for protecting web applications against SQLIA. Our tool uses a heuristic method that combines runtime learning and runtime monitoring of valid/legal SQL statements, by parsing them to calculate and verify MD5 represented patterns (called SQL fingerprints) respectively, and is implemented in Java and AspectJ in order to achieve the goal that requires no training of developers and no modification of the legacy applications. Our evaluation results have shown this tool to be highly effective at protecting web applications from all types of SQL injection attacks. | en_US |
dc.description.tableofcontents | 目錄 i 圖目錄 iii 第1章 緒論 1 1.1 研究背景 1 1.2 研究動機 2 1.3 研究目的 2 1.4 基本假設 3 1.5 論文貢獻 3 1.6 章節架構 3 第2章 相關研究與背景技術 5 2.1 相關研究 5 2.1.1 輸入值驗證 5 2.1.2 具有防禦能力的應用程式 6 2.1.3 SQL語句結構分析及驗證 7 2.1.4 資料隱碼攻擊防禦策略 14 2.2 背景技術 14 2.2.1 資料隱碼攻擊原理 14 2.2.2 SQL語句結構分析 16 2.2.3 AOP 17 2.2.4 AspectJ 18 2.2.5 abc 21 2.2.6 MD5 22 第3章 系統設計架構 23 3.1 系統設計方法 23 3.1.1 語句結構分析 25 3.1.2 動態過濾 26 3.1.3 過濾範圍設定 27 3.2 可用性 27 3.2.1 適用範圍 27 3.2.2 準確度 28 3.2.3 效能評估 29 3.2.4 相關研究的比較 29 第4章 系統實作與測試 31 4.1 系統實作 31 4.2 分析剖面 33 4.3 監控剖面 35 4.4 檢查點設定介面 38 4.5 系統測試 39 4.5.1 實測環境: 39 4.6 系統效能測試 48 第5章 結論與未來工作 52 5.1 結論 52 5.2 未來工作 52 第6章 參考文獻 54 圖目錄 圖 1 應用程式原始程式碼[4]。 8 圖 2程式執行點加入監控程式[4]。 9 圖 3 應用程式原始碼(如圖1)SQL語句的自動機模型[4]。 9 圖 4 合法及攻擊SQL語句的自動機模型[4]。 10 圖 5 具有兩個輸入欄位的SELECT指令結構解析樹[3]。 11 圖 6 包含輸入值的SELECT指令結構解析樹[3]。 11 圖 7 包含恆真邏輯攻擊的SQL語句語法解析樹[3]。 11 圖 8 使用註解攻擊的SQL語句語法解析樹[3]。 12 圖 9 SQLGuard運作架構圖[3]。 12 圖 10 程式比較[3]。 13 圖 11 SQL固定項內容。 16 圖 12 剖面運作圖[1]。 18 圖 13 AspectJ支援的Join point[12]。 20 圖 14 pointcut程式範例。 20 圖 15 MD5雜湊值比較。 22 圖 16 防禦系統架構圖。 24 圖 17 利用AOP compiler將橫切關注點織入核心關注點[12]。 25 圖 18 分析後取得的SQL特徵值資料。 26 圖 19 相關研究比較。 30 圖 20 設定值儲存格式。 32 圖 21 程式碼執行SQL語句位置。 33 圖 22 SQL執行點Pattern。 33 圖 23 Pointcut程式示意圖。 33 圖 24 Analysis Aspect運作程式碼。 34 圖 25 Monitoring Aspect運作流程圖。 35 圖 26 Analysis Aspect判斷是否為資料隱碼攻擊的檢查點。 36 圖 27 Analysis Aspect 驗證資料隱碼攻擊程式碼。 36 圖 28 Monitoring Aspect 正常流程運作流程圖。 37 圖 29 Monitoring Aspect 異常流程運作流程圖。 38 圖 30 監控工具設定介面。 39 圖 31 Analysis Aspect測試輸入畫面。 40 圖 32 Analysis Aspect測試結果。 40 圖 33 監控工具發現新的SQL pattern。 41 圖 34 監控工具發現SQL Pattern重複。 42 圖 35 SQL特徵值數量。 42 圖 36 Analysis Aspect輸入畫面。 43 圖 37 Analysis Aspect測試結果畫面。 44 圖 38 Monitoring Aspect 測試顯示畫面。 45 圖 39 監控工具比對結果為合法指令。 45 圖 40攻擊輸入值。 46 圖 41攻擊執行結果。 47 圖 42 監控工具發現有SQLIA。 48 圖 43 實測效能比較。 50 圖 44 Parse及MD5執行時間與Token數量的關係比較 51 圖 45 安全的軟體開發流程。 53 | zh_TW |
dc.language.iso | en_US | - |
dc.source.uri (資料來源) | http://thesis.lib.nccu.edu.tw/record/#G0097971015 | en_US |
dc.subject (關鍵詞) | 剖面導向程式設計 | zh_TW |
dc.subject (關鍵詞) | 剖面 | zh_TW |
dc.subject (關鍵詞) | 資料隱碼攻擊 | zh_TW |
dc.subject (關鍵詞) | AOP | en_US |
dc.subject (關鍵詞) | Aspect | en_US |
dc.subject (關鍵詞) | SQLIA | en_US |
dc.title (題名) | 以SQL語句剖析結合剖面技術設計實作資料隱碼攻擊之防禦工具 | zh_TW |
dc.title (題名) | An Anti-SQLIA tool based on SQL parsing and aspect technology | en_US |
dc.type (資料類型) | thesis | en |
dc.relation.reference (參考文獻) | 【1】 陳恭,「剖面導向程式設計(AOP/AOSD)簡介」,民國96年 | zh_TW |
dc.relation.reference (參考文獻) | 【2】 Dave Wichers, Jim Manico. SQL Injection Prevention Cheat Sheet. https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet | zh_TW |
dc.relation.reference (參考文獻) | 【3】 Gregory T. Buehrer, Bruce W. Weide, and Paolo A. G. Sivilotti.(2005). Using Parse Tree Validation to Prevent SQL Injection Attacks. | zh_TW |
dc.relation.reference (參考文獻) | 【4】 William G.J. Halfond and Alessandro Orso.(2005). Combining Static Analysis and Runtime Monitoring to Counter SQLInjection Attacks. | zh_TW |
dc.relation.reference (參考文獻) | 【5】 胡百敬,「SQL Injection (資料隱碼)– 駭客的 SQL填空遊戲(上)(下) 」。民國91年6月28日,http://www.microsoft.com/taiwan/sql/SQL_Injection_G1.htm,http://www.microsoft.com/taiwan/sql/SQL_Injection_G2.htm | zh_TW |
dc.relation.reference (參考文獻) | 【6】 R. McClure and I. Kruger. (2005). SQL DOM: Compile Time Checking of Dynamic SQL Statements. In Proceedings of the 27th International Conference on Software Engineering (ICSE 2005), pages 88-96. | zh_TW |
dc.relation.reference (參考文獻) | 【7】 W. R. Cook and S. Rai. (2005). Safe Query Objects: Statically Typed Objects as Remotely Executable Queries. In Proceedings of the 27th International Conference on Software Engineering (ICSE 2005). | zh_TW |
dc.relation.reference (參考文獻) | 【8】 『資料隱碼』SQL Injection的源由與防範之道。http://www.microsoft.com/taiwan/sql/SQL_Injection.htm,2002年6月28日 | zh_TW |
dc.relation.reference (參考文獻) | 【9】 MD5,http://zh.wikipedia.org/zh-tw/MD5 | zh_TW |
dc.relation.reference (參考文獻) | 【10】 JSQLParser,http://jsqlparser.sourceforge.net/home.php | zh_TW |
dc.relation.reference (參考文獻) | 【11】 SQL資料隱碼攻擊維基百科,自由的百科全書, http://zh.wikipedia.org/zh-tw/SQL%E8%B3%87%E6%96%99%E9%9A%B1%E7%A2%BC%E6%94%BB%E6%93%8A | zh_TW |
dc.relation.reference (參考文獻) | 【12】 Ramnivas Laddad. (2003). AspectJ in Action. Practical Aspect-Oriented Programming Second edition. | zh_TW |
dc.relation.reference (參考文獻) | 【13】 OWASP台灣分會,https://www.owasp.org/index.php/Taiwan | zh_TW |
dc.relation.reference (參考文獻) | 【14】 Gabriel Hermosillo Roberto Gomez. and Lionel Seinturier Laurence Duchien.(2007). Using Aspect Programming to Secure Web Applications. JOURNAL OF SOFTWARE, VOL. 2, NO. 6, DECEMBER 2007. | zh_TW |
dc.relation.reference (參考文獻) | 【15】 OWASP Top Ten Project,https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project | zh_TW |
dc.relation.reference (參考文獻) | 【16】 Persistent Hash Map,https://github.com/reines/persistenthashmap | zh_TW |