代碼安全課堂丨第八期:Switch中缺少default導致的代碼缺陷漏洞


1、什么是Switch中缺少default導致的代碼缺陷?

switch用在編程中,如C語言中它經常跟case一起使用,是一個判斷選擇邏輯結構。其功能就是控制流程流轉。switch語句的語法如下(switch,case,break和default是關鍵字):

switch ( 變量表達式 )

{

case 常量1 :語句;break;

case 常量2 :語句;break;

case 常量3 :語句;break;

...

case 常量n:語句;break;

default :語句;break;

}

當變量表達式所表達的量與其中一個case語句中的常量相符時,就執行此case語句后面的語句,並依次下去執行后面所有case語句中的語句,遇到break則中斷並跳出當前case分支執行語句。如果常量表達式的量與所有case語句的常量值都不相符,則執行default語句中的語句。

那代碼在switch語句中沒有default語句,這可能會導致復雜的邏輯問題並由此產生安全隱患。此缺陷代表了軟件開發中的常見問題,其中並非所有可能的變量值都由給定過程考慮或處理。因此,根據不良信息做出進一步的決策,並導致級聯故障。這種級聯故障可能會導致許多安全問題,並構成系統中的重大故障。

 

2、Switch中缺少default導致的代碼缺陷構成條件有哪些?

①switch語句沒有default情況。

 

3、Switch中缺少default導致的代碼缺陷會造成哪些后果?

關鍵字:改變程序執行邏輯;

①當switch中的邏輯進行數據檢查等,攻擊者可以注入不執行任何case分支的數據,則攻擊者可以繞過安全檢查,或導致程序處理邏輯上錯誤。

 

4、Switch中缺少default導致的缺陷防范和修補方法有哪些?

①switch語句中應該添加default標簽;

②在一些情況下,default應該作為檢查無效輸入的情況,而不應該作為一個表示假定的選項。

 

5、Switch中缺少default導致的漏洞樣例:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM