单例模式的破解 (反射及序列化方式)
来源:互联网 发布:起名网络中国 编辑:程序博客网 时间:2024/04/30 18:21
1.通过反射破解单例
Class clazz = Class.forName("com.lwk.singleton.SingletonDemo2"); Constructor<SingletonDemo2> c = clazz.getDeclaredConstructor(null); c.setAccessible(true); SingletonDemo2 s3 = c.newInstance();
阻止反射破解单例
改造构造方法
private SingletonDemo2() { if(instance != null){ throw new RuntimeException(); } }2.通过反序列化破解单例
前提是单例实现序列化
public class SingletonDemo2 implements Serializable
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("d:/a.text")); oos.writeObject(s1);; oos.close(); ObjectInputStream ois = new ObjectInputStream(new FileInputStream("d:/a.text")); SingletonDemo2 s3 = (SingletonDemo2) ois.readObject();阻止反序列化破解单例
在单例类里面添加如下方法
public Object readResolve(){ return instance;}反序列化时直接通过该方法返回对象,不再创建单独的对象
0 0
- 单例模式的破解 (反射及序列化方式)
- 反射的方式破解单例模式
- 单例模式以及通过反射和序列化破解单例模式
- 单例模式以及通过反射和序列化破解单例模式
- 单例设计模式反射,序列化漏洞及解决方案
- 反射 序列化 克隆对单例模式的破坏
- 序列化 反射破坏单例模式
- java 单例模式剖析(涉及同步,Junit,log4j,反射,类载入器,多线程,序列化)
- 单例模式(多线程不安全,序列化不安全,反射不安全实例)
- 单例模式及单例对象的可序列化
- 单例模式的序列化
- 设计模式——单例模式(防止序列化以及反射机制侵犯)
- 单例模式的两种实现方式及区别
- 单例模式的7种实现方式及分析
- 单例模式的破解和保护
- 单例模式再讨论(有关序列化的单例问题)
- 单例模式再讨论(有关序列化的单例问题)
- 单例模式的反射相关问题
- 进制转换
- 11月9日学习内容:字符串数组
- Hibernate 入门第四课 第一个小例子
- Java关键字this、super使用总结
- LeeCode No.201 Bitwise AND of Numbers Range
- 单例模式的破解 (反射及序列化方式)
- javascript基础笔记(十一)js的Array对象
- 站在巨人的肩膀上,C++开源库大全
- 分布式Unique ID的生成方法一览
- activiti5.20简单介绍(八) -- 流程操作续
- idea中maven下载依赖包慢
- CSS和JavaScript实现右拉菜单
- JAVA开发中的路径问题总结
- python实现短网址系统