首页 > 编程语言 >java基础五-序列化和反序列化

java基础五-序列化和反序列化

时间:2023-03-12 15:37:22浏览次数:37  
标签:输出 java 对象 readObject 基础 序列 序列化

 序列化和反序列化

序列化:将对象转换为字节序列的过程

反序列化 将字节序列恢复为对象的过程

实现序列化

实现Serializable接口-创建对象输出流-调用writeObject()方法-关闭对象输出流 

使用集合保存对象,可以将结合中的所有对象序列化

 

反序列化

反序列化已经要强制类型转换,因为在文本文件中是不能提前知道他的类型是什么的 所以要提前将类型放在对象中

List <Studnet> stu= (List<Student>) ofs.readObject();

 

 泛型输出 

for循环是新建了一个s对象域遍历stu里面的值并输出

反序列化漏洞之弹计算器

如果java引用对用户的输入(序列话后的恶意数据),不可信数据(入序列化过的命令执行代码)做了反序列化处理,产生的非预期对象过程可能带来RCE

恶意序列化代码

 

反序列化代码

 

 

 调用readObject函数弹出

Apache-Commons-Collections反序列化漏洞饭呢西以及POC构造

 

标签:输出,java,对象,readObject,基础,序列,序列化
From: https://www.cnblogs.com/lisenMiller/p/17208219.html

相关文章

  • [JS JavaScript] 使用CryptoJS库对给定的加密字符串进行解密
    本代码可以使用在Web中,或者其他可以出入密码的场景在需要解密的信息不大的情况下,可以将加密后的信息放入到JS中,在输入密码后,对加密后的信息进行解密在vue中,可以很方便的......
  • java8新特性-引用流-max,min
    例子:List<User>users=newArrayList<>();users.add(newUser("张三",30));users.add(newUser("李四",34));users.add(newUser("王五",20));......
  • mysql-connector-java版本大于5,项目启动连接数据库报错
    项目启动连接数据库报错如下2023-02-0822:44:23.491ERROR23596---[reate-951000054]com.alibaba.druid.pool.DruidDataSource:createconnectionSQLException,......
  • 面向对象基础
    一、面向对象基础1、面向对象思想简介软件编程就是将我们的思维转变成计算机能够识别语言的一个过程什么是面向过程?自上而下顺序执行,逐步求精其程序结构是按功能......
  • Java面向对象的三大特性:封装、继承、多态
    1、封装  封装的特点:高内聚,低耦合,说白了就好比电视机,它把里面的线路都给隐藏了,只留给我几个接口供我们使用。高类聚就是类的内部数据细节由自己来完成,不允许外部干涉,低......
  • Java应用【XVIII】在 Java 中使用JUnit5进行单元测试和自动化测试
    一、前言单元测试和自动化测试是现代软件开发过程中必不可少的环节,可以提高代码质量和开发效率。JUnit5是Java中流行的单元测试框架,本文将介绍如何在Java中使用JUnit5进行单......
  • 《SQL与数据库基础》20. 主从复制
    目录主从复制原理搭建主库配置从库配置测试本文以MySQL为例主从复制主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从库服务器中,然后在从库上对这些......
  • Javadoc工具的使用
    Java提供了Javadoc工具,通过这个工具可以使你编写的代码生成一份API文档,前提是你已经为你的程序提供了文档注释。下面Javadoc工具使用的步骤:在你的代码中添加文档注释pub......
  • 个人数据保全计划:(2)NAS基础知识
    前言距离去年国庆入手了NAS至今有好几个月时间了,NAS折腾起来有点麻烦,且实际作用因人而异,并没有想象中的好用,所以说好的这个系列一直没有更新~还有另一方面的原因,这些NAS......
  • Java 剑指offer(16) 打印1到最大的n位数
    题目输入数字n,按顺序打印出从1最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999。思路陷阱:n过大时是大数问题,不能简单用int或者long数据输出,需要采......