华为C&C++安全编程规范V3.1核心要点
![](https://csdnimg.cn/release/wenkucmsfe/public/img/starY.0159711c.png)
"华为语言安全编程规范_V3.1.pdf"
华为C&C++语言安全编程规范旨在提供一套标准,以确保软件开发过程中的安全性,减少因编程错误导致的安全漏洞。该规范涵盖了多个方面,包括变量、断言、函数、循环、异常机制、类的设计以及程序的正确退出等。
1. **变量**
- 规则1.1.1强调对指针、资源描述符变量和BOOL变量初始化,以避免未定义的行为。
- 规则1.1.2指出,当资源释放后,相关变量应立即重置,防止悬空引用。
- 规则1.1.3规定类的成员变量应在构造函数中初始化,以确保对象处于已知状态。
- 规则1.1.4禁止对指针执行sizeof操作,因为这可能导致误解或错误。
2. **断言(ASSERT)**
- 规则1.2.1推荐使用宏定义断言,而不是直接调用assert函数,以便于管理和控制。
- 规则1.2.2警告不应使用断言处理可能在运行时发生的错误,因为它们不是错误处理机制。
- 规则1.2.3禁止在断言中更改运行环境,以保持程序稳定性。
3. **函数**
- 规则1.3.1要求当数组作为函数参数传递时,必须同时传递其长度,以防止缓冲区溢出。
- 规则1.3.2禁止在公共接口API函数中对参数使用ASSERT,以防止对外部可见的错误行为。
- 规则1.3.3建议将不变参数声明为const,以明确其用途和避免意外修改。
4. **循环**
- 规则1.4.1强调所有循环都应具有明确的退出条件,以防止无限循环。
5. **异常机制**
- 规则1.5.1规定禁用C++异常机制,可能是因为异常处理可能带来额外的复杂性和潜在的安全风险。
6. **类**
- 规则1.6.1提到如果定义了构造函数,应提供对应的析构函数,以保证资源的正确管理。
- 规则1.6.2告诫构造函数不应包含可能失败的操作,以防止对象处于不完整状态。
- 规则1.6.3禁止在构造函数中创建线程,防止线程生命周期与对象生命周期错配。
- 规则1.6.4严禁使用`delete this`,这可能导致对象的非法销毁。
- 规则1.6.5如果类的公共接口返回私有数据地址,应加上const修饰,防止意外修改。
7. **安全退出**
- 规则1.7.1禁止使用atexit函数,可能是因为它不能保证资源清理。
- 规则1.7.2严禁使用kill、TerminateProcess等函数结束其他进程,以防止意外中断。
- 规则1.7.3禁止使用pthread_exit、ExitThread,以维护线程的正常终止。
- 建议1.7.1建议避免在非main函数中使用exit、ExitProcess,以保证程序的正常清理流程。
这些规则和建议构成了华为C&C++语言安全编程的基础框架,旨在提高代码的健壮性、安全性和可靠性,降低被攻击的风险。开发者应严格遵循这些指导原则,以创建更安全的软件产品。
2023-05-10 上传
2023-06-24 上传
2023-07-03 上传
2023-08-31 上传
2023-10-03 上传
2023-07-13 上传
![](https://profile-avatar.csdnimg.cn/a01b54c5c2d64ec0bbf491b6744b7c7c_weixin_44200292.jpg!1)
暂时空缺
- 粉丝: 4
- 资源: 12
最新资源
- 计算机人脸表情动画技术发展综述
- 关系数据库的关键字搜索技术综述:模型、架构与未来趋势
- 迭代自适应逆滤波在语音情感识别中的应用
- 概念知识树在旅游领域智能分析中的应用
- 构建is-a层次与OWL本体集成:理论与算法
- 基于语义元的相似度计算方法研究:改进与有效性验证
- 网格梯度多密度聚类算法:去噪与高效聚类
- 网格服务工作流动态调度算法PGSWA研究
- 突发事件连锁反应网络模型与应急预警分析
- BA网络上的病毒营销与网站推广仿真研究
- 离散HSMM故障预测模型:有效提升系统状态预测
- 煤矿安全评价:信息融合与可拓理论的应用
- 多维度Petri网工作流模型MD_WFN:统一建模与应用研究
- 面向过程追踪的知识安全描述方法
- 基于收益的软件过程资源调度优化策略
- 多核环境下基于数据流Java的Web服务器优化实现提升性能