一、安全漏洞模式
此类缺陷会给系统留下安全隐患,为攻击该系统开了绿灯。
1.缓冲区溢出(buffer overflow)漏洞模式
当程序要在一个缓冲区内存储比该缓冲区的大小还要多的数据时,即会产生缓冲区溢出漏洞。
1)数据拷贝造成的缓冲区溢出;
2)格式化字符串造成的缓冲区溢出;(比如往固定数组里面写入大于最大索引长度的内容会溢出)
2.竞争条件(Race Condition)(竞态)
3.风险操作(Risky Operation)
如果不恰当地使用了某些标准库函数,可能会带来安全隐患。
比如说rand()和random(),它们生成伪随机值时表现出来的性能是非常差的,很容易被破解。
二、疑问代码模式
此类问题未必会造成系统的错误,起提示作用。
性能缺陷:降低性能;
争议代码:让人费解;
低性能模式
该模式导致软件运行效率低下,因此建议采用更高效的代码来完成同样的功能;
包括低效代码、使用多余函数、Java显示垃圾回收、冗余代码、头文件中定义的静态变量、不必要的文件包含、字符串低效操作和更简单的运算可以代替等。
三、规则模式
软件开发总要遵循一定的规则,某些团队也有一些开发规则,违反这些规则是不允许的。
常见的缺陷模式:故障模式、安全漏洞模式、缺陷模式和规则模式。