内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

ABAP和Java里的單例模式攻擊實(shí)例

這篇文章主要講解了“ABAP和Java里的單例模式攻擊實(shí)例”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“ABAP和Java里的單例模式攻擊實(shí)例”吧!

這篇文章主要講解了“ABAP和Java里的單例模式攻擊實(shí)例”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“ABAP和Java里的單例模式攻擊實(shí)例”吧!

目前成都創(chuàng)新互聯(lián)已為近千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計、華龍網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

面向?qū)ο缶幊淌澜缋锏膯卫J?Singleton)可能是設(shè)計模式里最簡單的一種,大多數(shù)開發(fā)人員都覺得可以很容易掌握它的用法。單例模式保證一個類僅有一個實(shí)例,并提供一個訪問它的全局訪問點(diǎn)。

然而在某些場景下,這種設(shè)計模式的單例特性會被破壞,看下面這個例子:

代碼的第三行,這個ABAP類實(shí)現(xiàn)了接口if_serializable_object,這意味著它可以被關(guān)鍵字CALL TRANSFORMATION進(jìn)行序列化和反序列化操作。

使用下面的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.

執(zhí)行之后,在調(diào)試器里發(fā)現(xiàn)lo_instance和lo_instance2指向了兩個不同的對象實(shí)例,說明此時這個ABAP單例模式已經(jīng)被破壞了。

再看看Java,下面是一個最簡單的Java單例模式:

然而我們?nèi)匀豢梢酝ㄟ^Java的反射機(jī)制來破壞這個單例:

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;    }  }

這種單例模式的消費(fèi)代碼:

System.out.println("Name:" + JerrySingletonAnotherApproach.INSTANCE.getName());

此時別有用心的攻擊者如果想使用反射機(jī)制創(chuàng)建新的實(shí)例,會收到下面的報錯信息:
Exception in thread "main" java.lang.NoSuchMethodException: singleton.JerrySingletonAnotherApproach.<init>()
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)

當(dāng)前文章:ABAP和Java里的單例模式攻擊實(shí)例
網(wǎng)頁網(wǎng)址:http://www.rwnh.cn/article14/ioioge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊虛擬主機(jī)、網(wǎng)站導(dǎo)航微信小程序、標(biāo)簽優(yōu)化、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)
义乌市| 湄潭县| 蓝田县| 垣曲县| 抚宁县| 通榆县| 潮州市| 汽车| 上虞市| 广南县| 秀山| 高平市| 五常市| 盱眙县| 麻江县| 攀枝花市| 玛曲县| 隆子县| 民权县| 修武县| 庆元县| 永福县| 庆安县| 宿松县| 英吉沙县| 元江| 盐源县| 巧家县| 紫金县| 定远县| 南丰县| 浦县| 武定县| 邢台市| 宝应县| 娄烦县| 南昌县| 揭东县| 汉寿县| 黄梅县| 崇仁县|