fortify安全整改解決方案-代碼安全示例ppt課件_第1頁
fortify安全整改解決方案-代碼安全示例ppt課件_第2頁
fortify安全整改解決方案-代碼安全示例ppt課件_第3頁
fortify安全整改解決方案-代碼安全示例ppt課件_第4頁
fortify安全整改解決方案-代碼安全示例ppt課件_第5頁
已閱讀5頁,還剩20頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Fortify平安整改處理方案王凱常見平安破綻 SQL InjectionSQL注入 Cross-Site Scripting (跨站腳本攻擊) Log Forging(日志攻擊) Unrelease Resource(資源走漏)SQL Injection SQL 注入攻擊 定義在輸入的字符串之中注入惡意的SQL指令,這些注入的指令會被數據庫誤以為是正常的SQL指令進展執行,使系統遭到破壞。 Reference /wiki/SQL%E8%B3%87%E6%96%99%E9%9A%B1%E7%A2%BC%E6%94%BB%E6%93%8A注入原理(1)SELECT

2、 * FROM items WHERE owner = #userName# AND itemname = $itemName$運用SQL關鍵字(AND/OR/DELETE/UPDATE) itemName = name or 1=1 itemName = name ;Delete from items 注入原理2 運用特殊符號% , - itemName = %name%; itemName = name;delete from items ;-Ibatis下的SQL注入對于Ibaits參數援用可以運用#和$兩種寫法。(1)#寫法會采用預編譯方式,將本義交給了數據庫,會自動在參數的外面加上引

3、號,不會出現注入問題。(2)$寫法相當于拼接字符串,會出現注入問題。處理方案1 對于一切懇求進展入參的過濾 Reference: oschina/code/snippet_811941_14131處理方案2防止運用 $ 字符拼接變量的情況select * from t_user where name like %$name$%;1Oracleselect * from t_user where name like %|#name #|% ;2Mysqlselect * from t_user where name like concat(%,#name #,%) ;3Mssqlselect *

4、 from t_user where name like %+#name #+%常見平安破綻 SQL InjectionSQL注入 Cross-Site Scripting (跨站腳本攻擊) Log Forging(日志攻擊) Unrelease Resource(資源未釋放)Cross-Site Scripting (跨站腳本攻擊)攻擊者向動態Web頁面里插入惡意HTML代碼,當用戶閱讀頁面時,嵌入的惡意代碼被執行從而到達攻擊的目的。XSS分類1 Reflected XSS(反射式XSS)程序從 HTTP 懇求中直接讀取數據,并在 HTTP 呼應中前往數據。當攻擊者誘運用戶為易受攻擊的 We

5、b 運用程序提供危險內容,而這些危險內容隨后會反響給用戶并在 Web 閱讀器中執行,就會發生反射式 XSS 。 例如代碼 Employee ID:XSS分類2 Persisted XSS(耐久式CSS)程序將危險數據儲存在一個數據庫或其他可信任的數據存儲器中。這些危險數據隨后會被回寫到運用程序中,并包含在動態內容中。 例如代碼: JAVA代碼:String name = dao.queryName(id); JSP代碼:Employee Name:處理方案1 入參和出參校驗 (1)“ 可以引入一個標簽或者終了一個標簽。 (2) & 可以引入一個字符實體。 (3)對于外加雙引號的屬性值,雙引號(

6、)是特殊字符,由于它們標志了該屬性值的終了。 (4) 對于外加單引號的屬性值,單引號()是特殊字符,由于它們標志了該屬性值的終了。處理方案2 URL重定向校驗 1空格符、制表符和換行符標志了 URL 的終了。 2 & 引入一個字符實體 3非 ASCII 字符即 ISO-8859-1 編碼表中一切高于 128 的字符不允許出如今 URL 中,因此在此上下文中也被視為特殊字符。 4在效力器端對在 HTTP 本義序列中編碼的參數進展解碼時,必需過濾掉輸入中的 % 符號。常見平安破綻 SQL InjectionSQL注入 Cross-Site Scripting (跨站腳本攻擊) Log Forgin

7、g(日志攻擊) Unrelease Resource(資源走漏)Log Forging日志攻擊將未閱歷證的用戶輸入寫入日志文件,致使攻擊者偽造日志條目或將惡意信息內容注入日志。例如代碼String val = request.getParameter(val);try int value = Integer.parseInt(val);catch (NumberFormatException) log(Failed to parse val = + val);正常日志: INFO:Failed to parse val=twenty-one惡意日志:假設value輸入:twenty-one%0

8、a%0aINFO:+User+logged+out%3dbadguy輸出: INFO:Failed to parse val=twenty-one INFO:User logged out=badguy處理方案1只輸出必要的日志,功能上線前刪除大多數調試日志2過濾非法字符常見平安破綻 SQL InjectionSQL注入 Cross-Site Scripting (跨站腳本攻擊) Log Forging(日志攻擊) Unrelease Resource(資源走漏)Unrelease Resource(資源走漏) 程序能夠無法勝利釋放某一項已懇求的系統資源。 假設攻擊者可以故意觸發資源走漏,就有

9、能夠經過耗盡資源池的方式發起 DOS(Denial Of Service)攻擊。資源走漏分類 Unrelease Stream(流資源未釋放) Unrelease DB Connection數據庫銜接未釋放Unrelease Stream(流資源未釋放) try Reader reader = new FileReader(fileName); BufferedReader br = new BufferedReader(reader catch(Exception e) finally if(br != null) br.close();/假設拋異常,那么br資源無法釋放 Unrelease

10、 DB Connection數據庫銜接未釋放SqlConnection conn = new SqlConnection(connString);SqlCommand cmd = new SqlCommand(queryString);cmd.Connection = conn;conn.Open();SqlDataReader rdr = cmd.ExecuteReader();HarvestResults(rdr); conn.Connection.Close();假設在執行 SQL 或者處置查詢結果時發生異常,SqlConnection 對象不會被封鎖。假設這種情況頻繁出現,數據庫將用完

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論