ABAP和Java里的单例模式攻击实例
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章主要讲解了"ABAP和Java里的单例模式攻击实例",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"ABAP和Java里的单例模式攻击实例"吧!面
千家信息网最后更新 2025年02月02日ABAP和Java里的单例模式攻击实例
这篇文章主要讲解了"ABAP和Java里的单例模式攻击实例",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"ABAP和Java里的单例模式攻击实例"吧!
面向对象编程世界里的单例模式(Singleton)可能是设计模式里最简单的一种,大多数开发人员都觉得可以很容易掌握它的用法。单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。
然而在某些场景下,这种设计模式的单例特性会被破坏,看下面这个例子:
代码的第三行,这个ABAP类实现了接口if_serializable_object,这意味着它可以被关键字CALL TRANSFORMATION进行序列化和反序列化操作。
使用下面的ABAP代码:
DATA(lo_instance) = zcl_jerry_singleton=>get_instance( ).DATA: s TYPE string.CALL TRANSFORMATION id SOURCE model = lo_instance RESULT XML s.DATA: lo_instance2 TYPE REF TO zcl_jerry_singleton.CALL TRANSFORMATION id SOURCE XML s RESULT model = lo_instance2.
执行之后,在调试器里发现lo_instance和lo_instance2指向了两个不同的对象实例,说明此时这个ABAP单例模式已经被破坏了。
再看看Java,下面是一个最简单的Java单例模式:
然而我们仍然可以通过Java的反射机制来破坏这个单例:
Class> classType = JerrySingleton.class; Constructor> c = classType.getDeclaredConstructor(null); c.setAccessible(true); JerrySingleton e1 = (JerrySingleton)c.newInstance(); JerrySingleton e2 = JerrySingleton.getInstance(); System.out.println(e1 == e2);
在Java里,我们可以通过枚举类来防御这种反射攻击:
public enum JerrySingletonAnotherApproach { INSTANCE ; private String name = "Jerry" ; public String getName() { return this.name; } }
这种单例模式的消费代码:
System.out.println("Name:" + JerrySingletonAnotherApproach.INSTANCE.getName());
此时别有用心的攻击者如果想使用反射机制创建新的实例,会收到下面的报错信息:
Exception in thread "main" java.lang.NoSuchMethodException: singleton.JerrySingletonAnotherApproach.()
at java.lang.Class.getConstructor0(Class.java:3082)
at java.lang.Class.getDeclaredConstructor(Class.java:2178)
at singleton.SingletonAttack.test3(SingletonAttack.java:31)
at singleton.SingletonAttack.main(SingletonAttack.java:43)
感谢各位的阅读,以上就是"ABAP和Java里的单例模式攻击实例"的内容了,经过本文的学习后,相信大家对ABAP和Java里的单例模式攻击实例这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
模式
实例
攻击
代码
反射
学习
内容
可以通过
对象
序列
机制
设计模式
面的
设计
不同
别有用心
世界
两个
人员
例子
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络技术部的职能职责
orm框架 隐藏数据库
天津软件开发价格走势
软件开发解决方案项目多的弊端
农业计算机网络技术有限公司
关系型数据库英语
网络安全项目模板
哪些企业不适合数据库营销
用友 错误数据库连接失败
网络安全 知名的网站
svn服务器端下载64
空间数据库编辑报告
大连出租服务器的集团
注册服务器无响应
bim数据库好不好
数据库系统原理试卷
华为云服务器备份
Fafair找不到服务器
数据库的连接运算
网络安全从业方向
db2 数据库模式
朗新科技产业互联网怎么样
mysql数据库软件
实惠的财务软件开发机构
智慧云平台投标客户端服务器地址
天津网络安全与执法专升本
广电有自己的宽带服务器吗
土木转软件开发
浙江网络技术检测公司怎么样
江宁租房软件开发