ISO/IEC TS 17961:2013
Information technology — Programming languages, their environments and system software interfaces — C secure coding rules
发布时间:2013-11-15 实施时间:


C语言是一种广泛使用的编程语言,但它也是一种容易出现安全问题的语言。由于C语言的灵活性和强大的指针操作,开发人员很容易犯下一些常见的编程错误,如缓冲区溢出、格式化字符串漏洞、整数溢出等。这些错误可能导致程序崩溃、数据损坏、系统崩溃甚至是安全漏洞。为了帮助开发人员编写更安全、更可靠的C代码,ISO/IEC TS 17961:2013提供了一组C语言安全编码规则。

该标准包含了一系列规则,涵盖了C语言中的常见安全问题。这些规则包括:

1. 避免缓冲区溢出:开发人员应该使用安全的字符串函数,如strncpy()和snprintf(),来避免缓冲区溢出。

2. 避免格式化字符串漏洞:开发人员应该使用安全的格式化字符串函数,如snprintf(),来避免格式化字符串漏洞。

3. 避免整数溢出:开发人员应该使用安全的整数函数,如strtol()和strtoul(),来避免整数溢出。

4. 避免空指针引用:开发人员应该检查指针是否为空,以避免空指针引用。

5. 避免使用未初始化的变量:开发人员应该始终初始化变量,以避免使用未初始化的变量。

除了这些规则之外,该标准还提供了一些最佳实践,以帮助开发人员避免常见的编程错误。这些最佳实践包括:

1. 使用安全的函数:开发人员应该使用安全的函数,如strncpy()和snprintf(),来避免缓冲区溢出和格式化字符串漏洞。

2. 避免使用危险的函数:开发人员应该避免使用危险的函数,如gets()和scanf(),以避免安全漏洞。

3. 使用编译器警告:开发人员应该启用编译器警告,以帮助发现潜在的编程错误。

4. 使用静态分析工具:开发人员应该使用静态分析工具,如Coverity和Klocwork,来发现潜在的编程错误。

总之,ISO/IEC TS 17961:2013提供了一组C语言安全编码规则,以帮助开发人员编写更安全、更可靠的C代码。这些规则涵盖了C语言中的常见安全问题,并提供了一些最佳实践,以帮助开发人员避免常见的编程错误。

相关标准
- ISO/IEC 9899:2011 Programming languages — C
- ISO/IEC 12207:2008 Systems and software engineering — Software life cycle processes
- ISO/IEC 27001:2013 Information technology — Security techniques — Information security management systems — Requirements
- ISO/IEC 15408-1:2009 Information technology — Security techniques — Evaluation criteria for IT security — Part 1: Introduction and general model
- ISO/IEC 27002:2013 Information technology — Security techniques — Code of practice for information security controls