程式碼安全測試第九期:Switch中省略了break語句導致的程式碼缺陷漏洞
1、什麼是Switch中省略了break語句導致的程式碼缺陷?
break語句通常用在迴圈語句和switch語句中。當break用於switch語句中時,可使程式跳出switch而執行switch以後的語句;如果沒有break語句,則會從滿足條件的地方(即與switch(表示式)括號中表示式匹配的case)開始執行,直到switch結構結束。
如果程式在switch或類似構造中省略了break語句,則會導致多個條件相關聯的程式碼被執行。當程式設計師只打算執行與一個條件相關的程式碼時,這可能會引起問題,可能導致關鍵程式碼在不該執行的情況下執行。
2、Switch中省略了break語句導致的程式碼缺陷構成條件有哪些?
①switch語句的catch塊中沒有break指令。
3、Switch中省略了break語句導致的程式碼缺陷會造成哪些後果?
關鍵字:改變執行邏輯
可能導致執行意外的輯和其他意外的應用程式行為。
4、Switch中省略了break語句導致的缺陷防範和修補方法有哪些?
①省略一個break語句會導致使用者無法區分是忘記編寫break語句還是開發人員故意為之。如果確認是故意使兩種情況以上使用同一種處理邏輯,確保邏輯正確。
②使用if語句替代該功能,這更安全。
5、Switch中缺少default導致的漏洞樣例:
用 靜態程式碼檢測分析可以發現程式碼中存在著switch中省略了break語句的缺陷,如下圖:
switch中省略了break語句在CWE中被編號為CWE-484: Omitted Break Statement in Switch
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70000012/viewspace-2774397/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 程式碼安全測試第八期:Switch中缺少default導致的程式碼缺陷
- 程式碼安全測試第七期:不安全的反射漏洞缺陷反射
- java中switch語句注意--breakJava
- 程式碼安全測試第二十八期:未使用的變數缺陷漏洞變數
- 程式碼安全測試第二十九期:通用異常捕獲宣告缺陷漏洞
- 程式碼安全測試第十四期:使用已破解或危險的加密演算法導致的漏洞加密演算法
- 程式碼安全測試第二十五期:陣列宣告為public final static漏洞缺陷陣列
- 程式碼安全測試第十五期:跨站指令碼漏洞指令碼
- 程式碼安全 兩種程式碼漏洞
- 程式碼安全測試第十二期:LDAP注入漏洞LDA
- 程式碼安全測試第六期:XPath注入漏洞
- Java-Annotation的一種用法(消除程式碼中冗餘的if/else或switch語句)Java
- 程式碼安全測試第三十期:丟擲通用異常缺陷
- 程式碼缺陷解讀:通用異常捕獲宣告缺陷漏洞
- 程式碼安全測試第五期:OS命令注入漏洞
- 程式碼安全測試第十七期:物件只定義了Equals和Hashcode方法之一的漏洞物件
- 程式碼安全測試第二十一期:從finally塊中return漏洞
- 程式碼安全測試第十八期:呼叫System.exit()存在安全漏洞
- 程式碼安全測試第十期:日誌偽造漏洞
- 程式碼安全測試第十一期:記憶體洩漏漏洞記憶體
- break語句
- JavaScript中的switch語句JavaScript
- 程式碼安全測試第十六期:使用不安全的隨機值漏洞隨機
- 程式碼安全測試第十三期:敏感資訊的明文傳輸漏洞
- 程式碼安全測試第四期:可逆的單向雜湊漏洞
- 論減少程式碼中return語句的騷操作
- 程式碼安全測試第二十六期:透過錯誤訊息導致的資訊暴露
- 程式碼安全測試第一期:什麼是SQL隱碼攻擊漏洞?SQL
- 測試程式碼
- 程式碼安全測試第二期:URL重定向(跳轉)漏洞
- Python物件導向之十二:程式碼測試Python物件
- [20190320]測試相同語句遇到導致cursor pin S的情況.txt
- [20190321]測試相同語句遇到導致cursor pin S的疑問.txt
- java中的switch case語句Java
- JAVA中的跳轉語句—break、continueJava
- 新的PHP高危漏洞可導致黑客執行遠端程式碼攻擊PHP黑客
- 滲透測試之CSRF程式碼漏洞的檢測與加固方案
- 消除程式碼中的 if-else/switch-case