电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

华为C&C 语言安全编程规范_V3.1VIP免费

华为C&C  语言安全编程规范_V3.1_第1页
1/47
华为C&C  语言安全编程规范_V3.1_第2页
2/47
华为C&C  语言安全编程规范_V3.1_第3页
3/47
华为C&C++语言安全编程规范HuaweiC&C++SecureCodingStandardV3.1华为技术有限公司版权所有侵权必究目录0前言目的适用范围攻击者思维安全编码基本思想外部数据定义术语定义1基础要求1.1变量规则1.1.1:指针变量、表示资源描述符的变量、BOOL变量声明必须赋予初值规则1.1.2:指向资源句柄或描述符的变量,在资源释放后立即赋予新值规则1.1.3:类的成员变量必须在构造函数中赋予初值规则1.1.4:严禁对指针变量进行sizeof操作建议1.1.1:尽量使用const建议1.1.2:全局变量的访问如果涉及多个线程,必须加锁建议1.1.3:同一个函数内,局部变量所占用的空间不要过大1.2断言(ASSERT)规则1.2.1:断言必须使用宏定义,禁止直接调用assert函数规则1.2.2:运行时可能会导致的错误,严禁使用断言规则1.2.3:严禁在断言内改变运行环境建议1.2.1:不要将多条语句放在同一个断言中1.3函数规则1.3.1:数组作为函数参数时,必须同时将其长度作为函数的参数规则1.3.2:严禁对公共接口API函数的参数进行ASSERT操作规则1.3.3:不对内容进行修改的指针型参数,定义为const建议1.3.1:谨慎使用不可重入函数建议1.3.2:字符串或指针作为函数参数时,请检查参数是否为NULL建议1.3.3:在函数的开始处对参数进行ASSERT操作(API除外)1.4循环规则1.4.1:循环必须有退出条件1.5异常机制规则1.5.1:禁用C++异常机制1.6类规则1.6.1:如果有构造函数,则必须有析构函数规则1.6.2:构造函数内不能做任何有可能失败的操作规则1.6.3:严禁在构造函数中创建线程规则1.6.4:严禁出现deletethis操作规则1.6.5:如果类的公共接口中返回类的私有数据地址,则必须加const类型建议1.6.1:尽量避免定义public成员1.7安全退出规则1.7.1:禁用atexit函数规则1.7.2:严禁调用kill、TerminateProcess函数终止其他进程规则1.7.3:禁用pthread_exit、ExitThread函数建议1.7.1:禁用exit、ExitProcess函数(main函数除外)建议1.7.2:禁用abort函数2字符串/数组操作规则2.1:确保有足够的存储空间规则2.2:对字符串进行存储操作,确保字符串有’\0’结束符规则2.3:外部数据作为数组索引时必须确保在数组大小范围内规则2.4:外部输入作为内存操作相关函数的复制长度时,需要校验其合法性规则2.5:调用格式化函数时,禁止format参数由外部可控规则2.6:调用格式化函数时,format中参数的类型与个数必须与实际参数类型一致3正确使用安全函数规则3.1:正确设置安全函数中的destMax参数规则3.2:禁止不正确地重定义或封装安全函数规则3.3:禁止用宏重命名安全函数规则3.4:禁止自定义安全函数规则3.5:必须检查安全函数返回值,并进行正确的处理4整数规则4.1:整数之间运算时必须严格检查,确保不会出现溢出、反转、除0规则4.2:整型表达式比较或赋值为一种更大类型之前必须用这种更大类型对它进行求值规则4.3:禁止对有符号整数进行位操作符运算规则4.4:禁止整数与指针间的互相转化规则4.5:禁止对指针进行逻辑或位运算(&&、||、!、~、>>、<<、&、^、|)规则4.6:循环次数如果受外部数据控制,需要校验其合法性5内存规则5.1:内存申请前,必须对申请内存大小进行合法性校验规则5.2:内存分配后必须判断是否成功规则5.3:禁止引用未初始化的内存规则5.4:内存释放之后立即赋予新值规则5.5:禁止使用realloc()函数规则5.6:禁止使用alloca()函数申请栈上内存6不安全函数规则6.1:禁止外部可控数据作为system、popen、WinExec、ShellExecute、execl,execlp,execle,execv,execvp、CreateProcess等进程启动函数的参数规则6.2:禁止外部可控数据作为dlopen/LoadLibrary等模块加载函数的参数规则6.3:禁止使用外部数据拼接SQL命令规则6.4:禁止在信号处理例程中调用非异步安全函数规则6.5:禁用setjmp/longjmp规则6.6:禁止使用内存操作类危险函数7文件输入/输出规则7.1:创建文件时必须显式指定合适的文件访问权限规则7.2:必须对文件路径进行规范化后进行使用规则7.3:不要在共享目录中创建临时文件建议7.1:在进行文件操作时避免引起竞争条件8敏感信息处理规则8.1:禁用rand函数产生用于安全用途的伪随机数规则8.2:内存中的敏感信息使用...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

华为C&amp;amp;C 语言安全编程规范_V3.1

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部