程序健壮性

36、基于最弱前置条件的程序健壮性分析 本文探讨了基于最弱前置条件的程序健壮性分析方法,重点研究了相对健壮性与分散式健壮性的关系,并通过 JavaScript 示例展示了其在防止注入攻击和动态代码加载中的应用。文章还分析了安全 API 攻击和跨站脚本攻击的原理,提出了基于 MAC 的解决方案,并与已有健壮性研究工作进行了对比。最后,文章展望了未来在拓展应用场景、优化分析算法和结合机器学习等方面的研究方向。 阅读详情
//腾讯QQ2008年笔试题中的附加题(30分)
//从程序健壮性进行分析,下面的FillUserInfo函数和main函数分别
//存在什么问题?

#include <iostream>
#include <string>
#include <memory>

#define MAX_NAME_LEN 20

struct USERINFO
{
	int nAge;
	char szName[MAX_NAME_LEN];
};

void FillUserInfo(USERINFO* parUserInfo)
{
	std::cout<<"请输入用户的个数:";

	int nCount=0;
	std::cin>>nCount;

	for(int i=0;i<nCount;i++)
	{
		std::cout<<"请输入年龄:";
		//原先是这样的
		//std::cin>>parUserInfo[i]->nAge
		std::cin>>parUserInfo[i].nAge;

		std::string strName;
		std::cout<<"请输入姓名:";
		std::cin>>strName;
		strcpy(parUserInfo[i].szName,strName.c_str());
	}
}

int main(int argc,char* argv[])
{
	//USERINFO arUserInfos[2]={0};
	USERINFO arUserInfos[2];
	ZeroMemory(arUserInfos, sizeof(arUserInfos));

	FillUserInfo(arUserInfos);

	printf("The first name is:");
	printf(arUserInfos[0].szName);
	printf("\n");

	return 0;
}

//********************************************************************
// 百度知道上某牛人给的解答:
// 1:函数入口未验证.要防止FillUserInfo(USERINFO* parUserInfo)的
//   参数指针是【非法指针】。
//   入口验证可以这样写:ASSERT(parUserInfo);
//   或:
//   if(parUserInfo == NULL){return;}
// 2:从设计的角度来说,把数据长度的限定和数据传递值分开是非常危险的。
//   比如FillUserInfo(USERINFO* parUserInfo)我传了USERINFO arUserInfos[100]
//   进去,里面输入nCount的时候我输入101呢?一般来说应该FillUserInfo(USERINFO* 
//   parUserInfo,int nSize);传入一个需要赋值的长度参数.而且你在函数里面也无法
//   计算parUserInfo的长度.
// 3:将std::string赋值给【C风格字符串】是十分危险的。string是动态开辟内存,
//   【长度是无限的】。如果超过C风格数组的长度即MAX_NAME_LEN很容易造成栈溢出
//    或内存访问崩溃。如需这样用.请用strncpy(parUserInfo[i].szName,strName.c_str(),20);
// 4:一个细节.for(int i=0;i<nCount;i++)
//   虽然C++支持定义时使用,但不建议这么写。不同版本的编译器对此理解不同,不利于
//   扩展和向上升级。微软建议还是用
//   int i = 0 ;
//   for(i=0;i<nCount;++i)
// 5:USERINFO arUserInfos[100]={0};结构体赋值不建议这么做。
//   有两种推荐的安全做法
//   1--构造函数初始化.
//   2--ZeroMemory(arUserInfos,sizeof(arUserInfos)); 调用memset置零
// 6:混用printf和cout,cin也是不好的,虽然不会有危险,但是其使用不同的缓冲流可能
//   存在输出顺序混乱的问题
//************************************************************************

//************************************************************************
// 【关于c_str()函数的学习】
// 1,C语言中没有string类型,C++中为了与C语言兼容,使用string类对象的
//    成员函数c_str()把string对象转换成C中的字符串样式
//    注意:一定要使用strcpy()函数等操作c_str()返回的指针
//    原因:c_str函数的返回值是const char *的,不能直接赋值给char *
//    包含的头文件:<cstring>
// 2,最好不要这样写:
//    char *c;
//    string s = "1234";
//    c = s.c_str();
//    
//************************************************************************

FPGA实现的AES加解密算法——Verilog源代码详解 本文将介绍基于FPGA的AES加解密算法的Verilog实现,并提供相应的源代码。根据密钥长度的不同,AES算法分为AES-128、AES-192和AES-256三种模式。对于已知的明文-密钥组合,可以使用在线的AES加解密工具计算出正确的密文,然后将该密文与FPGA加速器的输出进行比较。本文以AES-128算法为例,介绍基于FPGA的AES加解密算法的设计思路和Verilog实现。以上是基于FPGA的AES加解密算法的Verilog实现的相关内容。模块接受输入的明文和密钥,并输出加密后的密文。 阅读详情

相关推荐

蜗牛星际+OpenWrt实战:双网口变AP模式,让所有设备同网段互通

本文详细介绍了如何将蜗牛星际双网口小主机刷入OpenWrt系统,并将其配置为AP模式,实现与主路由同网段的无缝桥接。通过关闭DHCP、桥接物理网口等核心步骤,解决家庭网络设备割裂问题,让所有设备在同一局域网内高效互通,特别适合追求网络简洁和厌恶多级NAT的技术爱好者。

zero1的博客 962

腾讯QQ2008年笔试题中的附加题(30分)

//腾讯QQ2008年笔试题中的附加题(30分) //从程序健壮性进行分析,下面的FillUserInfo函数和main函数分别 //存在什么问题? #include #include #include #define MAX_NAME_LEN 20 struct USERINFO { int nAge; char szName[MAX_NAME_LEN]; }; void Fi

尚钦 1079

R 绘制环形树状图

按大类小类的从属关系绘制环形图,并把不同值的节点设置为相应大小。要求同一类的节点应为同一颜色。 按照输入,处理代码和输出记录

weixin_43718786的博客 1872

软件构造相关五

一、健壮性和正确性的简单介绍 1.1Robustness 健壮性 1.1.1 定义:健壮性又称鲁棒性,是指软件对于规范要求以外的输入情况的处理能力。所谓健壮的系统是指对于规范要求以外的输入能够判断出这个输入不符合规范要求,并能有合理的处理方式。 简单来说就是系统在正常输入或不正常外部环境下仍能够表现正常的程度。 1.1.2面向健壮性编程的做法 处理未期望的行为和错误终止 即使终止执行,也要准确/...

weixin_43915441的博客 229

博途S7-1200与昆仑通态MCGS纯仿真联调实战指南

本文详细介绍了博途S7-1200与昆仑通态MCGS纯仿真联调的实战指南,包括环境搭建、配置步骤、通信桥接及故障排除。通过TIA Portal和MCGS Pro搭建的仿真环境,可实现80%以上的基础功能验证,适用于工业自动化学习和开发,大幅降低硬件投入成本。

weixin_26834815的博客 439

【CANoe16安装教程】亲测安装成功

CANoe16安装教程

qq_45302638的博客 2万+

软件质量测试中的健壮性测试是什么?一文和你说

在验证我们构建的计算机系统的健壮性时,无论编程语言的语义如何,尤其是当存在多个依赖项时,它都是必要的。一些健壮性测试解决方案提供自动生成测试用例,这些用例可以提高质量,并帮助在目标硬件上验证和验证软件组件,这是在最严格的安全完整性级别内的需求, 例如DO-178C过程标准中的DAL A。但即使取得了这样的成功,不幸的是也会有死亡、伤害和诉讼,但它为健壮性测试的有效性提供了一个有效的论据。我们用来测试质量和可靠性的流程之一被称为健壮性测试,即在存在异常输入或压力环境条件的情况下,系统正常运行的程度。

OKCRoss的博客 2527

cartographer如何使用2个反光柱子作为一个landmark

2个反光柱的摆放要求:靠着墙摆,因为我们只能从一侧看到2个反光柱,从两侧都看到至少需要3个反光柱来定位。 landmark检测原理:因为我们是从一侧看到2个反光柱,所以看到2个反光柱在一帧激光数据中会有顺序,有2种情形,如下图 这两种情形,我们发现 情形1: 这种情形2个反光柱子被检测到的激光角度小于180,我们认为大一些激光角度的是原点。 情形2: 这种情形2个反光柱子被检测到的激光角度大于180,我们认为小一些激光角度的是原点。 这样原点就固定下来,并是唯一的。2个反光柱构成的坐标系也就确定了。和激光坐

南北粉面馆 3827

#软件构造 健壮性与正确性

健壮性 健壮性:系统在不 正常输入或不正常外部环境下仍能够表现正常的程度 面向健壮性的编程: 处理未期望的行为和错误终止 即使终止执行,也要准确/无歧义的向用户展示全面的错误信息 错误信息有助于进行debug 健壮性法则 (Postel’s 准则) 对自己的代码要保守,对用户的行为要开放 封闭实现细节,限定 用户的恶意行为 考虑极端情况,没有“不可能” ...

Franklins_Fan的博客 983

5G射频设计中N77&N79的PRX为什么需要3个SRS

首先,我们来逐个拆解一下这个神秘的“

weixin_43199439的博客 1324

华为OD机试双机位C卷-恢复数字序列 (Py/Java/C/C++/Js/Go)

华为OD机试双机位C卷 恢复数字序列,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试 - 恢复数字序列。

qq_45776114的博客 1203

面向正确性和健壮性的软件构造

HIT SoftwareConstruction

nitze的博客 552

Google 二次签名 导致 Facebook , Google 登录失败

google 授权登录

xq610928的博客 1957

提升程序的健壮性

如何提升程序的健壮性,这一点在今天之前基本上没有考虑过,或者说考虑的很少。不过在刚才,查看Demo的时候发现,这些大佬写的代码,都会有意无意地考虑到程序的健壮性的问题。 那我就稍微整理一下常见的思路。 判误 这个比较容易理解,就是如果一个函数有参数,或者说是需要从其它地方得到值,那么会进行参数或者值得判误操作,判断该值是否满足我们的需要。 比如,文件的判空,数据的判正负,操作的判真等,这点也是...

“时光清浅,不觉多年”的博客 1832

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

深入理解程序的健壮性

1 问题程序健壮性是一个关键的软件质量属性,它涉及软件系统在面临各种异常情况时的表现。具体来说,健壮性是指软件对于规范要求以外的输入情况的处理能力。这包括了对错误输入、异常环境以及系统内部错误的响应和处理。2方法作用错误处理能力增强。用户体验提升。系统可靠性增强。维护性和可扩展性提升。降低维护成本。安全性提升。代码例子内容:通过输入来解释健壮性。代码清单1def add_numbers(a, b...

算法与编程之美 1216

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

java程序的健壮性与正确性

java程序的健壮性与正确性

weixin_44234328的博客 2479

程序的健壮性与codereview

文章目录程序的健壮性与codereview一、正确性影响程序正确性的因素前置状态判定“受理—处理—关闭”模型“申请—审批—善后—完成”模型二、健壮性错误数据系统内部出现问题程序健壮性注意点三、方法总结四、code review1.代码规范:明确Coding规则2.功能文档编写3.review的范围与reviewer职能 程序的健壮性与codereview 功能分类:操作类,查询类 健壮性:尽量少的...

weixin_41019350的博客 414

程序的健壮性Robustness

所谓的程序健壮性是指处理异常的能力,在异常中能够独立处理异常,并且把正确的答案输出。 例如: 有一个程序能够下载一个文件到指定的路径,但是这个路径是不存在的,因此程序必须要处理这个情况。 例1:下面的代码就没有很好的考虑到异常情况,如果service层出现某个异常,则返回给前端的值就为null 例2:下面的代码没有考虑到returnresult为null时,catch...

dd10850的博客 505

如何提高程序的健壮性,增加判断。

如果后台在返回的时候少了一个属性?前端会不会报错,这是我们前端开发一定会遇到的问题。那么如何的提高程序的健壮性呢。 关于这个问题,我们可以在实例化这个对象的时候进行判读来增加程序的健壮性。下面是一个参考示例。 public class ClientUser implements Parcelable {     public static final Parcelable.Cre

光英的记忆博客 3449

提高程序健壮性的方法

 占位

coolmoon的专栏 1173

驱动程序的健壮性考虑

驱动程序的健壮性要考虑硬件出问题的时候不会导致内核的工作异常。比如驱动注册的时候要对硬件的识别,设备硬件是否存在或者硬件是否正常。如果硬件模块不正常,但是还要去注册,访问的时候会出现问题,如果处理不当会导致内核CRASH。比如一个I2c设备,硬件已经不正常,如果不加判断去继续注册,可能有些设备的资源出现空,上层通过API访问的时候可能出现空指针,导致系统重启。在注册驱动的开始要对硬件诊断,如果硬件

zhenwenxian的专栏 3283

程序的健壮性和鲁棒性

一、健壮性 健壮性是指软件对于规范要求以外的输入情况的处理能力。 所谓健壮的系统是指对于规范要求以外的输入能够判断出这个输入不符合规范要求,并能有合理的处理方式。 另外健壮性有时也和容错性,可移植性,正确性有交叉的地方。 比如,一个软件可以从错误的输入推断出正确合理的输入,这属于容错性量度标准,但是也可以认为这个软件是健壮的。 一个软件可以正确地运行在不同环境下,...

weixin_34238642的博客 1545

《Effective Python》第十章 健壮性——使用 assert 和 raise 提升 Python 程序的健壮性

本文探讨Python中assert与raise的合理使用,强调二者本质区别:assert用于开发阶段验证内部假设,不应处理用户输入;raise是对外API的错误报告机制。通过评分系统案例展示了两种语句的不同应用场景,指出assert应验证函数参数和算法前提,而raise需定义清晰的自定义异常类。特别提醒不要在生产环境依赖assert检查用户输入,也不要捕获AssertionError以免掩盖问题。文章总结了正确使用这两个语句的原则,强调合理运用能提升代码健壮性和可维护性。

企业级后端与 AI 应用开发双线探索 1032

以血的教训来谈程序的健壮性&&练习3-3

首先请各位看下面这段代码: #include #define MAX 100 //limited of amount of array's element void Expand(char s1[], char s2[]); int main() { char string_origin[MAX]; char string_transformation[MAX]; int

wcgwuxinwei的专栏 663

C语言 函数——函数封装与程序的健壮性

检查入口参数的有效性、合法性。*存在死代码的原因何在?*检查函数调用成功与否。

hangweijie的博客 719
上一篇: Leetcode - Array - Merge Sorted Array
下一篇: 用C写一个简单病毒
JerkWisdom
博客等级 码龄14年 70粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值