C/C++安全编程要点

本文介绍了C/C++编程中需要注意的安全问题,包括字符串操作、格式化函数、整数操作、内存管理、文件操作、内核操作、命令注入、不安全的随机数、多线程下的安全函数以及STL库的使用注意事项。强调了边界检查、内存管理和异常处理的重要性,旨在提高代码的安全性。
摘要由CSDN通过智能技术生成
  1. 字符串操作安全
    字符串操作不当会导致字符串缓存区被恶意代码和数据覆盖破坏,进而引发拒绝服务攻击(合法用户无法正常使用)以及执行任意代码,比如绕过验证。

  2. 格式化函数
    a) 格式化操作常见的问题包括格式化参数类型不匹配、参数数目不匹配、格式化字符串长度没有限制、以及字符串的全部或者部分由用户输入;
    b) 格式化函数使用不当会导致程序由于未定义行为而异常终止(拒绝服务),甚至执行任意代码(查看栈内容、改写内存、执行任意代码)。

  3. 整数操作安全
    a) 整数操作不当的常见场景包括有/无符号整数运算溢出、整形转换时出现数据截断、以及对有符号整数使用为操作符运算
    b) 整数操作不当会导致内存分配出错(分配过大内存或0内存)、以及执行任意代码(整数溢出可导致内存破坏)
    c) 有符号整数溢出的结果是不确定的,无符号整数溢出会出现反转环绕,即对比(类型最大值+1)取模
    d) 使用整数要多校验数值的合法性

  4. 内存(堆)管理安全
    a) 常见的危险的堆操作包括内存拷贝/分配时未检验合理性、引用空指针/野指针/未定义指针/已释放内存的指针、使用不匹配的内存管理操作、重复释放、使用有隐患的函数比如realloc和alloca等;
    b) 内存管理使用不当会导致拒绝服务攻击(比如程序崩溃)、执行任意代码(溢出越界)等

  5. 文件操作安全
    a) 常见的文件操作问题包括文件操作返回值判断有误(通常用int而不是char之类的)、文件创建时没有指定合适的文件权限(比如为防止其他进程访问重要文件,需要以独占方式打开)、对文

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值