System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及软件开发,尤其涉及一种序列化和反序列化监测方法、装置及计算机设备。
技术介绍
1、在日常的项目开发中,经常会遇到需要将java的对象进行序列化为字符串保存在文件中的情况,在需要使用时再将字符串反序列化为对应的对象。或者是从服务端下发的字符串内容反序列化为对应的对象,以将对象的状态信息转换为可以存储或传输的格式。
2、在项目在打包的过程中,出于减少包体大小、安全性等因素考量,会将类的字段、方法进行混淆优化,以减少包体积,提高安全性。在这一过程中,字段的名称可能会发生改变,若在书写代码时遗漏了字段的注解,就会导致反序列化时不能通过键查找到对应的值,使得反序列化失败,影响业务的正常运行。
技术实现思路
1、本申请的目的旨在至少能解决上述的技术缺陷之一,特别是现有技术中出于减少包体大小、安全性等因素考量,会将类的字段、方法进行混淆优化,以减少包体积,提高安全性。在这一过程中,字段的名称可能会发生改变,若在书写代码时遗漏了字段的注解,就会导致反序列化时不能通过键查找到对应的值,使得反序列化失败,影响业务的正常运行的技术缺陷。
2、第一方面,本申请提供了一种序列化和反序列化监测方法,所述方法包括:
3、对序列化工具类、序列化方法和反序列化方法进行调用监测;
4、当满足预设的触发条件时,确定目标参数;
5、在所述目标参数中的各个字段中标记带有预设的目标关键字的字段,并遍历所述目标参数中未标记的字段,以检查遍历的各个字段是否有添
6、若遍历的各个字段中存在未添加所述序列化名称注解的字段,则将遍历的各个字段中未添加所述序列化名称注解的字段确定为异常字段,并根据各个异常字段触发异常提示。
7、在其中一个实施例中,所述触发条件为:
8、监测到存在参数传入所述序列化工具类中,
9、或,
10、监测到所述序列化方法或所述反序列化方法被调用。
11、在其中一个实施例中,所述确定目标参数的步骤,包括:
12、当监测到存在参数传入所述序列化工具类中时,将传入的参数确定为目标参数。
13、在其中一个实施例中,所述确定目标参数的步骤,包括:
14、当监测到所述序列化方法或所述反序列化方法被调用时,将所调用的方法确定为目标方法;
15、将所述目标方法转换为静态方法,以从所述静态方法中获取传入的目标参数。
16、在其中一个实施例中,所述将所述目标方法转换为静态方法的步骤,包括:
17、调用预设的asm库将字节码中与所述目标方法对应的代码中的invokevirtual指令修改为invokestatic指令,以静态方法调用所述目标方法,以完成对所述目标方法的转换,并得到所述目标方法对应的静态方法。
18、在其中一个实施例中,所述目标关键字为transient 关键字;所述在所述目标参数中的各个字段中标记带有预设的目标关键字的字段的步骤,包括:
19、遍历所述目标参数中的每个字段,当遍历到带有所述transient 关键字的字段时,对该字段进行标记。
20、在其中一个实施例中,所述根据各个异常字段触发异常提示的步骤,包括:
21、根据各个异常字段,确定每个异常字段的代码位置;
22、根据每个异常字段的代码位置,分别确定各个异常字段的代码位置对应的跳转链接;
23、根据每个异常字段的代码位置对应的跳转链接,生成每个异常字段的异常信息,并抛出每个异常字段的异常信息。
24、第二方面,本申请提供了一种序列化和反序列化监测装置,所述装置包括:
25、调用监测模块,用于对序列化工具类、序列化方法和反序列化方法进行调用监测;
26、参数确定模块,用于当满足预设的触发条件时,确定目标参数;
27、遍历检查模块,用于在所述目标参数中的各个字段中标记带有预设的目标关键字的字段,并遍历所述目标参数中未标记的字段,以检查遍历的各个字段是否有添加序列化名称注解;所述目标关键字用于标识不需要序列化的字段;
28、异常提示模块,用于若遍历的各个字段中存在未添加所述序列化名称注解的字段,则将遍历的各个字段中未添加所述序列化名称注解的字段确定为异常字段,并根据各个异常字段触发异常提示。
29、第三方面,本申请提供了一种存储介质,所述存储介质中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上述任一项实施例所述序列化和反序列化监测方法的步骤。
30、第四方面,本申请提供了一种计算机设备,包括:一个或多个处理器,以及存储器;
31、所述存储器中存储有计算机可读指令,所述一个或多个处理器执行时所述计算机可读指令时,执行如上述任一项实施例所述序列化和反序列化监测方法的步骤。
32、从以上技术方案可以看出,本申请实施例具有以下优点:
33、本申请提供的序列化和反序列化监测方法、装置及计算机设备,该方法包括:对序列化工具类、序列化方法和反序列化方法进行调用监测,当满足预设的触发条件时,确定所要检查的目标参数,为了排除不需要序列化的字段,在目标参数中的各个字段中标记带有预设的目标关键字的字段,然后遍历目标参数中未标记的字段,以检查遍历的各个字段是否有添加序列化名称注解,若遍历的各个字段中存在未添加所述序列化名称注解的字段,则将这些字段确定为异常字段,并根据各个异常字段触发异常提示。通过对需要添加但未添加序列化名称注解的字段进行异常提示,以提醒开发人员处理,避免项目上线或开发测试阶段才发现这一问题,导致业务因反序列化失败而产生异常,以提升项目管理以及风险管理的水平。
本文档来自技高网...【技术保护点】
1.一种序列化和反序列化监测方法,其特征在于,所述方法包括:
2.根据权利要求1所述的序列化和反序列化监测方法,其特征在于,所述触发条件为:
3.根据权利要求1或2所述的序列化和反序列化监测方法,其特征在于,所述确定目标参数的步骤,包括:
4.根据权利要求1或2所述的序列化和反序列化监测方法,其特征在于,所述确定目标参数的步骤,包括:
5.根据权利要求4所述的序列化和反序列化监测方法,其特征在于,所述将所述目标方法转换为静态方法的步骤,包括:
6.根据权利要求1所述的序列化和反序列化监测方法,其特征在于,所述目标关键字为transient 关键字;所述在所述目标参数中的各个字段中标记带有预设的目标关键字的字段的步骤,包括:
7.根据权利要求1所述的序列化和反序列化监测方法,其特征在于,所述根据各个异常字段触发异常提示的步骤,包括:
8.一种序列化和反序列化监测装置,其特征在于,所述装置包括:
9.一种存储介质,其特征在于:所述存储介质中存储有计算机可读指令,所述计算机可读指令被一个或多
10.一种计算机设备,其特征在于,包括:一个或多个处理器,以及存储器;
...【技术特征摘要】
1.一种序列化和反序列化监测方法,其特征在于,所述方法包括:
2.根据权利要求1所述的序列化和反序列化监测方法,其特征在于,所述触发条件为:
3.根据权利要求1或2所述的序列化和反序列化监测方法,其特征在于,所述确定目标参数的步骤,包括:
4.根据权利要求1或2所述的序列化和反序列化监测方法,其特征在于,所述确定目标参数的步骤,包括:
5.根据权利要求4所述的序列化和反序列化监测方法,其特征在于,所述将所述目标方法转换为静态方法的步骤,包括:
6.根据权利要求1所述的序列化和反序列化监测方法,其特征在于,所述目标关键字为tr...
【专利技术属性】
技术研发人员:梁伟健,廖志勤,
申请(专利权)人:广州趣丸网络科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。