ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021-10-11

2021-10-11 18:57:57  阅读:260  来源: 互联网

标签:11 10 函数 para 检查 安全 2021 返回值 内存


安全编码:
输出函数格式化
printf(input) :如果里面有%s%p等特殊符号,就会遇到安全问题
printf(“%s”,input) :用%s固定格式。
正确使用安全函数
包含两部分:正确使用DestMax的值,正确的检查函数返回值。

常见问题:过大的目标内容会造成溢出/未检查返回值,会导致异常数据或者恶意行为
禁止重新定义安全功能函数以及重新封装安全函数

destBuff 为结构体变量是,DestMax必须设置为sizeof(变量名)或者sizeof(结构名称)
destbuff 是结构体成员变量时,destMax必须为改成员大小,
不能对部分内存进行Copy.必须为全部范围的大小

返回值检查的例外情况:
全局变量或者结构体初始化的时候,Memset_s可以不用检查函数返回值。
源内存全部是静态变量,也不用检查安全函数返回值
对源内存同等大小复制,可以不用检查
堆上动态分配的内存,如果指针不为空可以不用检查

整数:溢出/反转
典型问题:Fun(int para)
{
char buff[buf_len];
if (para>Int_Max) return -1;
memcpy(bufm,str,para),
}
如果para为负值,会发生什么?

整数直接相加: int s = a +b会不会有问题

提型以后在计算
unsigend int a
Unit64 test = a *16//这个会导致什么问题?正确的怎么写 ?
unit64 test =(unit 64) a *16

有符号整型的计算:会出现反转
比如127 +1 如果是char类型的话会出现-128
有符号的证书,左移或者右移都有可能出现问题

反转是针对读物好整型还是有符号整型?
无符号整数,FFFFF–,到0 时,0-1 就会变成最大值,FFFFF继续,,,所以就反转了

内存 的集中危险的操作:
目标内存过小/空指针引用/使用已经释放的内训的指针/调用不匹配的函数New Delete 与 Malloc与free混用//双重释放
动态分配内存是堆内存,管理不当:DOS //执行恶意代码

内存引用必须初始化,不然,内存里面存在不确定的信息
可以消除之前留校的敏感信息
所以第一分配内存
malloc
第二:内存初始化:memset_s


Free§ p = NULL;

不能引用空指针

命令注入攻击:
System 函数要是硬编码或对外部输入中的命令分隔符进行过滤和转义
多线程不安全函数:strtok/printf count 混用
信号处理中使用一部不安全函数

常见的敏感信息:
SessionID
铭文口令
秘钥。。敏感信息使用要要及时清理

标签:11,10,函数,para,检查,安全,2021,返回值,内存
来源: https://blog.csdn.net/u013744104/article/details/120707239

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有