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導致的漏洞樣例: