C/C++安全开发指南

目录

1.C/C++使用错误

1.1一定不可以直接通过不规定长度地字符来复制函数

1.2通过符合安全规定的方法来创建进程类的函数

1.4与printf相关的参数等一定得相互照应

1.5尽一切可能避免指针的值泄露的出现

1.7要对数组进行删除操作时,必须要使用delete[],不能直接删除

1.8必须要关注并符合安全规范的转换隐式符号

1.9时刻对八进制的问题进行关注

1. 语法正确但不推荐的编程方式

2.1default必须得存在于switch的括号中,不能只有case

2.3对称加密秘钥被加载到客户端中的问题是不应该存在的

2.4存在于栈上的变量的地址一定要被返回才符合规范

2.5对那些存在逻辑关系的数组一定要多次认真审核规范

2.6函数的声明以及函数的实现必须是保持一致的

2.7通过复制粘贴而生成的飞马必须多次重复审核来避免出现问题

2.9编写的函数的分支全都必须返回

2.11没有赋值的内存并且是刚刚配置的不能直接使用

2.12对于内存有关系的函数的返回值进行审核

2.13一定不能直接对if里面的语句进行初始化操作

2.14对if中的按位操作进行多次审核

2. 多线程

3.1对于有关线程的安全性变量必须确保审核完成

3.2对于signal handler可能致使的条件竞争保持一定的监控

可能会导致代码出现不能执行等问题

3. 信息的安全隐私性

4.1不可以对储存的用户的密码等隐私信息数据进行泄露

4.2符合安全规范的删除存储在内存中的用户的敏感信息

4.3确保各种函数一定是被正确赋值的

4.4在需要严格加密确保安全时,不可以用弱prng函数

4.5确保rand的使用的地方不会小到影响它的使用

4. 对文件进行的操作

5.1必须确保路径不会穿越,降低其发生的可能

5.2避免安全问题例如相对路径可能会的问致使的问题

5.3确保对文件的权限的掌控

5. 对内存进行的操作

6. 对数字进行的操作

7. 对指针进行的操作

8.4避免出现错误转换类型的问题出现

1.C/C++使用错误

1.1一定不可以直接通过不规定长度地字符来复制函数

一定确保不能使用字符串来复制或者输入各种函数,同时也要能够正确的规划出缓冲区的长度。在C++中,可以选择尽可能的使用封装层次更高的各种指针,这样可以提高代码的可读性以及代码整体的安全性。

1.2通过符合安全规定的方法来创建进程类的函数

确保和用户有关的输入的地方,需要注意是不是存在相关的命令注入,以及其是否是非法字符。

1.3用一切可能地方法来降低可能使用到alloca以及能够改变数组长度的数组的情况出现

内存量不可知,可能会导致许多问题,例如栈溢出等等

1.4与printf相关的参数等一定得相互照应

需要其与对应的控制符号以及参数相互照应

1.5尽一切可能避免指针的值泄露的出现

不然会导致攻击者可以简单的攻击并破坏程序

1.6一定不可以让用户有权限来修改printf的函数的format参数的字符串

可能会导致用户可以直接进行一些危害程序的代码操作

1.7要对数组进行删除操作时,必须要使用delete[],不能直接删除

可能会导致没有定义的行为出现,使得代码出现安全问题

1.8必须要关注并符合安全规范的转换隐式符号

可能会出现无法预测的安全事情出现,导致逻辑漏洞

1.9时刻对八进制的问题进行关注

尽量不要使用0来对齐代码格式,否则可能会出现一些代码错误

  1. 语法正确但不推荐的编程方式

2.1default必须得存在于switch的括号中,不能只有case

没有default可能会出现包含不了所有的情况的问题出现

2.2给予太多内容在错误的那些信息或者是Debug中是不应该存在的

有很大可能会导致信息泄露,出现一些更容易被攻击的代码程序。

2.3对称加密秘钥被加载到客户端中的问题是不应该存在的

会导致加密失效,没有作用,依然有严重的安全问题

2.4存在于栈上的变量的地址一定要被返回才符合规范

否则会出现失效后信息丢失的问题出现

2.5对那些存在逻辑关系的数组一定要多次认真审核规范

可能会导致程序出现越界行为

2.6函数的声明以及函数的实现必须是保持一致的

内容不对应可能会导致对应的逻辑问题

2.7通过复制粘贴而生成的飞马必须多次重复审核来避免出现问题

直接复制后仔细检查,一般没有相同的两句代码,仔细检查将需要改正的地方都修改掉

2.8避免出现左右两边结果一样的无效判断或者是判断永远是true或false

2.9编写的函数的分支全都必须返回

如若不然会导致其结果不可知

2.10栈上的没有通过赋值的变量不可以直接使用
最好的规范是在刚开始声明的是否就进行了赋值操作

2.11没有赋值的内存并且是刚刚配置的不能直接使用

可能存在旧的数据,可能会影响而出现安全问题

2.12对于内存有关系的函数的返回值进行审核

尽可能降低程序崩溃等问题出现的可能

2.13一定不能直接对if里面的语句进行初始化操作

代码极其有可能出现错误

2.14对if中的按位操作进行多次审核

代码极其有可能出现错误

  1. 多线程

3.1对于有关线程的安全性变量必须确保审核完成

可能会出现内存破坏或者是逻辑问题

3.2对于signal handler可能致使的条件竞争保持一定的监控

可能会导致代码出现不能执行等问题

3.3对于time-of-check time-of-use可能致使的条件竞争保持一定的监控

可以选择控制多个进程的行为

  1. 信息的安全隐私性

4.1不可以对储存的用户的密码等隐私信息数据进行泄露

这些信息都必须进行加密的操作

4.2符合安全规范的删除存储在内存中的用户的敏感信息

使用完之后应该清空访问数据

4.3确保各种函数一定是被正确赋值的

没有初始化的随机数可能会被预测

4.4在需要严格加密确保安全时,不可以用弱prng函数

实现高强度加密

4.5确保rand的使用的地方不会小到影响它的使用

范围大就难以预测,

  1. 对文件进行的操作

5.1必须确保路径不会穿越,降低其发生的可能

存在一些特殊字符,可能出现路径穿越

5.2避免安全问题例如相对路径可能会的问致使的问题

出现许多安全的问题

5.3确保对文件的权限的掌控

防止信息泄露

  1. 对内存进行的操作

6.1避免出现越界的问题

6.2不要出现随意的地址

必须进行经过审核的操作

  1. 对数字进行的操作

7.1必须要避免出现整数溢出情况的出现

7.2正确使用最大值或最小值

7.3审核大小端

7.4查验被除数的值是不是是0

7.5确保数字的类型发生不正确的强制转换

  1. 对指针进行的操作

8.1数组不能直接和0比较的情况出现

8.2指针地址不能是确定的

8.3仔细核验指针的空情况

可能出现拒绝服务的问题出现

8.4避免出现错误转换类型的问题出现

不兼容问题的出现会导致安全问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值