一、安全漏洞模式
此類缺陷會給系統留下安全隱患,爲攻擊該系統開了綠燈。
1.緩衝區溢出(buffer overflow)漏洞模式
當程序要在一個緩衝區內存儲比該緩衝區的大小還要多的數據時,即會產生緩衝區溢出漏洞。
1)數據拷貝造成的緩衝區溢出;
2)格式化字符串造成的緩衝區溢出;(比如往固定數組裏面寫入大於最大索引長度的內容會溢出)
2.競爭條件(Race Condition)(競態)
3.風險操作(Risky Operation)
如果不恰當地使用了某些標準庫函數,可能會帶來安全隱患。
比如說rand()和random(),它們生成僞隨機值時表現出來的性能是非常差的,很容易被破解。
二、疑問代碼模式
此類問題未必會造成系統的錯誤,起提示作用。
性能缺陷:降低性能;
爭議代碼:讓人費解;
低性能模式
該模式導致軟件運行效率低下,因此建議採用更高效的代碼來完成同樣的功能;
包括低效代碼、使用多餘函數、Java顯示垃圾回收、冗餘代碼、頭文件中定義的靜態變量、不必要的文件包含、字符串低效操作和更簡單的運算可以代替等。
三、規則模式
軟件開發總要遵循一定的規則,某些團隊也有一些開發規則,違反這些規則是不允許的。
常見的缺陷模式:故障模式、安全漏洞模式、缺陷模式和規則模式。