ISO/IEC TR 24772-3:2020
Programming languages - Guidance to avoiding vulnerabilities in programming languages - Part 3: C
发布时间:2020-05-20 实施时间:


C语言是一种广泛使用的编程语言,但由于其灵活性和强大的指针操作,C语言程序容易受到各种安全漏洞的攻击。为了帮助程序员编写更加安全的C代码,ISO/IEC TR 24772-3:2020提供了一系列漏洞避免指南。

该标准列出了以下常见的C语言漏洞:

1. 缓冲区溢出
2. 格式化字符串漏洞
3. 整数溢出和下溢
4. 内存泄漏和悬挂指针
5. 使用未初始化的变量
6. 使用不安全的函数
7. 使用不安全的库函数
8. 使用不安全的文件操作函数
9. 使用不安全的网络函数
10. 使用不安全的动态内存分配函数

对于每种漏洞,该标准提供了相应的避免方法和最佳实践。例如,对于缓冲区溢出漏洞,该标准建议使用安全的字符串函数(如strncpy和snprintf)来代替不安全的字符串函数(如strcpy和sprintf)。对于格式化字符串漏洞,该标准建议使用安全的格式化函数(如snprintf)来代替不安全的格式化函数(如printf)。

此外,该标准还提供了一些通用的C语言编程建议,如:

1. 避免使用全局变量
2. 避免使用goto语句
3. 避免使用复杂的宏定义
4. 避免使用未定义的行为
5. 避免使用不必要的类型转换

这些建议可以帮助程序员编写更加清晰、可读性更高、更加安全的C代码。

总之,ISO/IEC TR 24772-3:2020是一份非常有用的C语言漏洞避免指南,可以帮助程序员编写更加安全的C代码,从而减少软件漏洞的风险。

相关标准
ISO/IEC TR 24772-1:2013 Programming languages - Guidance to avoiding vulnerabilities in programming languages - Part 1: Overview

ISO/IEC TR 24772-2:2013 Programming languages - Guidance to avoiding vulnerabilities in programming languages - Part 2: Ada

ISO/IEC TR 24772-4:2010 Programming languages - Guidance to avoiding vulnerabilities in programming languages - Part 4: Python

ISO/IEC 9899:2018 Programming languages - C