
华为C/C++安全编程规范:基础要求与防御策略
下载需积分: 3 | 911KB |
更新于2024-06-21
| 173 浏览量 | 举报
3
收藏
"华为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
最新资源
- 探索Opencv3中的RSF模型:活动轮廓技术解析
- MySQL在Android开发中的应用实例
- 爱普生L455废墨清零教程:软件操作与图解指南
- SpringMVC示例项目实战:登录功能实现
- 深入学习大数据技术:《Hadoop权威指南》第四版
- SuperMap iObjects Java实现空间度量分析与高性能栅格提取
- SSM框架整合SpringMVC-Spring-Mybatis实例解析
- 五款精选H5前端游戏模板震撼上线
- Linux C编程第二部分:从入门到精通
- VS2015环境下GSL2.4编译方法与问题解决
- WordPress文章自动同步发布至新浪微博教程
- 体验Spring Boot 2.0.0.M7源码下载新速度
- 全国地市县区坐标数据下载 - xls+shp格式
- 专业U盘加密工具:密码修改与分区管理
- Java设计模式实战解析:附完整源代码
- Redis与SpringCache整合实现分布式缓存解决方案
- Spring Framework 4.3.6.RELEASE官方jar包完整集合
- 终于搞定! Luke-Lucene 7.1.0 版本的下载方法
- Windows版Git客户端:64位版本发布
- 掌握Python编程:官方文档深入学习指南
- 飞思卡尔智能小车程序调试指南与参考代码
- JD-GUI:Java反编译工具的高效实用指南
- CUDA v8.0深度学习库cudnn v6.0发布
- 实现JavaScript中WGS1984与墨卡托投影的坐标系切换技术