1、從規範角度分析,一般是禁止使用C++的異常機制的。 2、要求所有的錯誤都應該通過錯誤值在函數間傳遞病做相應的判斷,而不應該通過異常機制進行錯誤處理。 3、編碼人員必須完全掌控自己的整個編碼過程,要有攻擊者思維,主動把握有可能出錯的環節,儘可能的分析出程式的所有異常,增強安全編碼意識。 4、使用c ...
1、從規範角度分析,一般是禁止使用C++的異常機制的。
2、要求所有的錯誤都應該通過錯誤值在函數間傳遞病做相應的判斷,而不應該通過異常機制進行錯誤處理。
3、編碼人員必須完全掌控自己的整個編碼過程,要有攻擊者思維,主動把握有可能出錯的環節,儘可能的分析出程式的所有異常,增強安全編碼意識。
4、使用c++異常機制的一些缺點:
(1)、增加開銷,依賴於編譯器、操作系統、處理器等,程式的性能有比較明顯的下降,這個是不建議使用的最主要的原因;
(2)、削弱編碼人員的安全意識;
(3)、打亂程式的正常執行流程,增加結構複雜度;
(4)、資源釋放不徹底,可能會導致記憶體泄漏;
(5)、降低代碼復用率,使用了異常機制的代碼,不能直接給不使用異常機制的代碼復用。
(6)、二進位程式,異常處理函數增加了受攻擊的概率,通常可以通過覆蓋異常處理函數的地址,就可以達到攻擊的效果;
5、建議使用異常機制的一些特殊場景
在接收c++語言本身拋出的異常(如new失敗、STL等)、第三方庫、系統庫的介面拋出異常時,可以用異常機制捕獲;
參考:
1、https://cloud.tencent.com/developer/article/1187782
2、https://blog.csdn.net/zgaoq/article/details/103941734
3、https://www.zhihu.com/question/29459586