活动介绍
file-type

华为C/C++安全编程规范:基础要求与防御策略

PDF文件

下载需积分: 3 | 911KB | 更新于2024-06-21 | 173 浏览量 | 96 下载量 举报 3 收藏
download 立即下载
"华为C&C++语言安全编程规范-V3.1" 华为的这份C&C++语言安全编程规范旨在提高编程人员的安全意识,培养攻击者思维,以编写出更安全可靠的代码。它适用于所有使用C/C++编程的开发人员。规范强调了在编程时始终假设外部数据是不可信的,并且攻击者可能尝试破坏程序运行环境和数据。基于这些假设,规范提出了安全编码的基本思想: 1. 处理外部数据时需进行严格校验:不依赖于任何外部数据的预期状态,而是通过严格的验证确保数据安全使用。 2. 减少代码的攻击面:简化代码,避免不必要的数据交互,减少暴露给攻击者的程序内部信息。 3. 采用防御性编码策略:弥补可能出现的编码疏漏,考虑各种可能的不确定性。 规范详细列出了基础要求,包括变量、断言、函数、循环、异常机制、类和安全退出等方面的具体规则和建议: 1. 变量:指针、资源描述符变量和BOOL变量初始化;资源释放后更新资源句柄变量;类成员变量在构造函数中初始化;避免对指针进行sizeof操作;使用const修饰;多线程环境下的全局变量访问需同步;控制局部变量大小。 2. 断言:使用宏定义断言,不在断言中执行可能改变环境的操作,避免多条语句在一个断言中。 3. 函数:数组参数需要提供长度信息;不应对公共API参数做ASSERT;常量指针参数标记为const;谨慎使用不可重入函数;检查函数参数是否为NULL;函数开始处进行参数ASSERT(API除外)。 4. 循环:每个循环都有明确的退出条件。 5. 异常机制:禁用C++异常机制。 6. 类:有构造函数则应有析构函数;构造函数内避免可能失败的操作;禁止在构造函数中创建线程;禁止删除this指针;返回私有数据地址时加上const。 7. 安全退出:禁用atexit;不直接终止其他进程;禁用pthread_exit和ExitThread;慎用exit和ExitProcess(main函数除外)。 这份规范为C/C++程序员提供了一套全面的安全编程指南,有助于降低软件中的安全风险,提高代码质量。遵循这些规则和建议,可以编写出更健壮、更安全的软件。

相关推荐

Lbb还不会飞
  • 粉丝: 28
上传资源 快速赚钱