精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Java安全基礎之Java的反射機制

開發 前端
利用Java的反射機制,我們可以無視類方法、變量訪問權限修飾符,調用任何類的任意方法、訪問并修改成員變量值,但是這樣做可能導致安全問題,如果一個攻擊者能夠通過應用程序創建意外的控制流路徑,就有可能繞過安全檢查發起相關攻擊。

好長時間沒有更新了,今天更新一篇關于java反射機制的文章,初學Java安全,內容如有不恰當的地方,還請各位大佬指正。

一、什么是反射

反射(Reflection)是Java的特征之一,C/C++語言中不存在反射,反射的存在使得運行中的Java程序能夠獲取自身的信息,并且可以操作類或對象的內部屬性。那什么是反射呢?

下面是官方的解釋:

反射使得Java代碼能夠發現有已加載類的字段、方法和構造函數的信息,并在安全限制內使用反射的字段、方法和構造函數對其底層對應的對象進行操作

簡單來說,通過反射,我們可以在運行時獲得程序或程序集中每一個類型的成員和成員的信息。同樣的,Java的反射機制也是也是如此,在運行狀態中,通過Java的反射機制,我們能夠判斷一個對象所屬的類;了解任意一個類的所有屬性和方法;能夠調用任意一個對象的任意方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱為Java語言的反射機制。

二、反射的用途

在靜態語言中,一般對象的類型都是在編譯期就確定下來的,二通過Java反射機制,可以動態的創建對象并調用其方法或屬性,這也就使得的反射的用途很廣泛,在開發過程中使用Eclipse、IDEA等開發工具時,當我們輸入一個對象或類并想調用它的屬性或方法時,編譯器會自動列出它的屬性或方法,這是通過反射實現的;載入,JavaBean和jsp之間的調用也是通過反射實現的。反射最重要的用途是開發各種框架,如上文中提到的Spring框架以及ORM框架,都是通過反射機制來實現的。

面向不同的用戶,反射機制的重要程度也大不相同。對于框架開發人員來說,反射雖小但作用非常大,它是各種容器實現的核心。對于一般的開發者來說,反射的作用相對較小。但總體來說,適當了解二框架的底層機制對我們的編程思想也是非常有幫助的。

三、靜態語言和動態語言

在學習反射之前,我們有必要了解一下什么是動態語言和靜態語言

  • 靜態語言(強類型語言)

靜態語言是在編譯時變量的數據類型即可確定的語言,多數靜態語言要求在使用變量之前必須聲明數據的類型。如C++、Java、Delphi、C#等

  • 動態語言(弱類型語言)

動態語言時在運行是確定數據類型的語言。變量使用之前不需要類型聲明,通常變量的類型是被賦值的那個值的類型。如PHP/ASP/Ruby/Python.Perl/ABAP/SQL/JavaScript/Unix Shell等等。

可以在程序運行時改變程序結構和變量類型的語言,比如在程序運行時,新的類和對象可以被加載和創建,新的函數或方法可以被加入或者去除等等。

3.1、動態特性

動態語言具有的某些特性即為動態特性

以PHP舉例,一段代碼,其中變量值的改變可鞥導致這段代碼發生功能上的變化,我們將這種現象稱為PHP的動態特性

比如下面的這個例子

我們只有當代碼運行時,通過變量傳入的值才能確定其具體功能

3.2、動態特性與Java反射

正是因為PHP中存在多種動態特性,使得開發人員能通過很少的代碼實現非常多的功能,比較經典的例子就是一句話木馬,通過一行<?php @eval($_POST[cmd]);代碼即可實現多種多樣的功能

但是Java本身是一門靜態語言,無法像PHP那么靈活多變。但是通過Java反射機制,可以為自身提供一些動態特性。比如,當我們通過IDE寫代碼時,敲擊點好號“.”,會出現當前對象或類所包含的屬性和方法,這里用到的就是Java反射機制。

反射最重要的用途就是開發各種通用框架,很多框架嗾使通過XML文件來進行配置的(如:struts.xml,spring-*.xml等),即所謂的框架核心配置文件。為了確保框架的通用性,程序運行時需要根據配置文件中對應的內容加載不同的類或對象,調用不同的方法,這也依賴于Java反射機制。

3.3、Java反射機制功能點

綜上所述,Java反射機制的功能可分為如下幾點:

  • 在程序運行時查找一個對象所屬的類
  • 在程序運行時查找任意一個類的成員變量和方法
  • 在程序運行時構造任意一個類的對象
  • 在程序運行時調用任意一個對象的方法

四、Java的命令執行類

4.1、java.lang.Runtime類

這個類是一個共有類,每個Java應用程序都有一個Runtime類實例,它允許應用程序與運行應用程序的環境交互。當前運行時可以從getRuntime方法獲得。應用程序無法創建自己的此類實例。

該類的主要方法是:getRuntime(),得到一個和當前程序相關聯的Runtime類的對象,解釋如下:

返回與當前Java應用關聯的runtime對象。大多數Runtime類的方法是實例方法,所以必須被當前運行時對象調用。

Runtime對象可以調用exec()方法執行命令,詳細文檔解釋如下:

在一個單獨的進程中執行指定的命令。這是一個方便的方法。以exec(command)形式調用與exec(String,Stringp[],file)的表現是相同的。

下面是一段代碼示例:

五、獲取類對象

獲取類對象的方式有很多種,這里提供四種方式

  • forName()
  • 直接獲取
  • getClass()
  • getSystemClassLoader().loadClass()

5.1、獲取類對象-forName()

如果要使用Class類中的方法完成,就需要使用forName方法,只要有類名稱即可,更為防爆,擴展性更強。這種方法并不陌生,在配置JDBC的時候,我們通常采用這種方法

5.2、獲取類對象-直接獲取

任何數據類型都具備一個靜態的屬性,可以使用.class來獲取其對應的Class對象。這種方法相對簡單,但還是要明確用到類的靜態成員

5.3、獲取類對象-getClass()

我們可以通過Object類中的getClass()方法來獲取字節碼對象,不過這種方式較為繁瑣,必須要明確具體的類,然后創建對象

六、獲取類方法

獲取某個Class對象的方法集合,主要有以下幾種方法:

  • getDeclareMethods
  • getDecleardMethod
  • getMethods
  • getMethod

6.1、獲取類方法-getDeclaredMethods

getDeclaredMethods方法返回類或接口聲明的所有方法,包括:public、protected、private和默認方法,但不包括繼承的方法

6.2、獲取類方法-getMethods

getMethods方法返回某個類的所有public方法,包括其繼承的public方法

6.3、獲取類方法-getMethod

getMethod方法只能返回一個特定的方法,如 Runtime類中的exec()方法,該方法的第一個參數為方法名稱,后面的參數為方法的參數對應Class的對象

6.4、獲取類方法 - getDeclaredMethod

getDeclaredMethod方法與getMethod類似,也只能返回一個特定的方法,該方法的第一個參數為方法名,第二個參數名是方法參數

七、獲取類成員變量

為了更直觀地體現出獲取類成員變量的方法,我們首先創建一個Student類,要獲取Student類成員變量,主要有以下幾個方法:

  • getDeclaredFields
  • getDeclaredField
  • getFields
  • getField

7.1、獲取類成員變量-getDeclaredFields

getDeclaredFields方法能夠獲得類成員變量數組,包括public、private和proteced,但是不包括父類的聲明字段

7.2、獲取類成員變量-getFields

gteFields能夠獲得某個類的所有的public字段,包括父類中的字段

7.3、獲取類成員變量-getDeclaredField

該方法與getDeclaresFields的區別是只能獲得類的單個成員變量

7.4、獲取類成員變量-getField

與getFields類似,getField方法能夠獲得某個類特定的public字段,包括父類中的字段

八、構造任意類的對象

構造任意類的對象最經典的方式:

無參數:className.newInstance()

有參數:getConstructor().newInstance()

構造任意類的對象兩種方式異同

(1)首先兩種方式在原始碼所在的位置上不同

  • Class.newInstance() → 在java.lang包
  • Constructor.newInstance() → 在java.lang.reflect包

(2)在使用方法上的不同

  • ClassName.newInstance():
- Class.forName("com.ms08067.newInstance.newInstanceExample").newInstance();

- newInstanceExample.class.newInstance();
  • getConstructor().newInstance()
- newInstanceExample.class.getConstructor().newInstance();
  • Class.newInstance() 只能反射無參的構造器
  • Constructor.newInstance() 可以反射任何構造器
  • Class.newInstance() 需要構造器可見
  • Constructor.newInstance() 可以反私有構造器
  • Class.newInstance() 對于捕獲或者未捕獲的一場均由構造器丟擲;
  • Constructor.newInstance() 通常會把丟擲的異常封裝成InvocationTrageException丟擲

九、調用任意實例對象的方法

調用任意實例對象的方法最經典的方式

  • 直接調用:objectName.functionName()
  • invoke調用:invoke()

invoke方法調用任意實例對象是通過反射實現的,下面是一個示例:

十、不安全的反射

如前所述,利用Java的反射機制,我們可以無視類方法、變量訪問權限修飾符,調用任何類的任意方法、訪問并修改成員變量值,但是這樣做可能導致安全問題,如果一個攻擊者能夠通過應用程序創建意外的控制流路徑,就有可能繞過安全檢查發起相關攻擊。假設有一段代碼如下:

其中存在一個字段name,當獲取用戶請求的name字段后進行判斷,如果請求的是Delect操作,則執行DelectCommand函數;若執行的是Add操作,則執行AddCommand函數;如果不是這兩種操作,則執行其他代碼。

假如開發者看到了這段代碼,他認為可以使用Java的反射來重構此代碼以減少代碼行,如下所示:

這樣的重構看起來使得代碼行減少,消除了if/else塊,而且可以在不修改命令分派器的情況下添加新的命令類型,但是如果沒有對傳入的name字段進行限制,則可以實例化實現Command接口的任何對象,從而導致安全問題。實際上,攻擊者甚至不局限于本例中的Command接對象,而是使用任何其他對象來實現,如調用系統中任何對象的默認構造函數,或者調用Runtime對象去執行系統命令,這可能導致遠程命令執行漏洞,因此不安全的反射的危害性極大,也是我們審計過程中需要重點關注的內容。

責任編輯:武曉燕 來源: FreeBuf.COM
相關推薦

2012-04-05 13:50:38

Java

2011-04-01 14:50:56

Java的反射機制

2011-09-27 10:23:24

Java反射機制

2017-05-17 15:28:15

Java反射機制

2011-03-09 09:11:52

java反射機制

2017-03-24 09:44:33

Java反射機制

2009-06-17 13:57:54

java實例Reflection

2023-11-01 13:48:00

反射java

2012-02-08 09:44:52

Java反射

2010-09-17 13:02:11

JAVA反射機制

2023-06-27 08:37:35

Java反射動態代理機制

2021-02-23 08:18:04

Java 反射機制

2025-08-18 07:39:08

2009-06-19 13:59:41

Java反射機制

2016-12-26 13:46:25

Java反射機制總結

2009-02-03 09:42:53

JAVA類JVM指令forName方法

2022-10-11 08:37:43

Servlet配置版本

2010-09-17 12:39:51

JAVA反射機制

2012-02-08 10:12:19

Java反射

2012-02-08 09:53:25

Java反射
點贊
收藏

51CTO技術棧公眾號

国产精品不卡一区二区三区| 狠久久av成人天堂| 欧美精品一卡二卡| 欧美激情亚洲天堂| 国产小视频免费观看| 亚洲免费综合| 蜜臀久久99精品久久久无需会员| 精品无码人妻少妇久久久久久| 欧美羞羞视频| 亚洲一区在线电影| 亚洲7777| 外国精品视频在线观看 | 亚洲视频免费| 日韩中文理论片| 中文字幕在线播放一区| 免费视频观看成人| 欧美色欧美亚洲高清在线视频| 国产系列第一页| 精品亚洲综合| 成人av在线资源网| 91精品久久久久久久久| 日韩精品久久久久久免费| 欧美另类综合| 久久精品99国产精品酒店日本| 短视频在线观看| 久久精品国产亚洲5555| 制服丝袜亚洲播放| 黄色三级视频在线| 中文字幕乱码中文乱码51精品| 亚洲精选免费视频| 一区二区三区三区在线| 国产片在线观看| 99re视频精品| 精品国产_亚洲人成在线| 精品乱子伦一区二区| 国产制服丝袜一区| 国产免费一区二区三区在线能观看 | 欧美特黄aaa| 欧美日韩精品一区二区三区视频| 岛国av在线不卡| 热99这里只有精品| 草草在线视频| 精品国产福利在线| 免费看又黄又无码的网站| 丁香花在线电影小说观看| 一区二区三区欧美亚洲| 激情六月天婷婷| 尤物在线网址| 亚洲五月六月丁香激情| 800av在线免费观看| 欧美黄色视屏| 亚洲国产一区二区三区青草影视 | 中文字幕第24页| 国产精品免费大片| 亚洲天堂av在线免费| 国产成人精品无码免费看夜聊软件| 色天下一区二区三区| 亚洲精品动漫久久久久| 中国特级黄色大片| 天天操综合520| 亚洲男人天堂2024| 2019男人天堂| 国产精品久久久乱弄| www亚洲欧美| 欧美成人免费观看视频| 伊人成年综合电影网| 45www国产精品网站| 免费看日批视频| 蜜臀av在线播放一区二区三区| 国产精品手机播放| 国产日产亚洲系列最新| 丁香激情综合五月| 免费精品视频一区二区三区| 国产高清av在线| 亚洲欧美激情小说另类| 免费看黄在线看| 欧美gay囗交囗交| 在线播放/欧美激情| 在线免费看黄色片| 国内精品久久久久久99蜜桃| 久久精品2019中文字幕| 日韩xxx高潮hd| 久久国产精品亚洲77777| 国产精品视频xxxx| 亚洲精品一区二区三区新线路| 99精品视频在线观看| 日韩一区免费观看| 91蜜桃在线视频| 一本大道久久a久久精二百| 91高清国产视频| 牛牛影视久久网| 中文字幕日韩综合av| 久久免费精彩视频| 日本va欧美va精品发布| 99在线观看视频网站| 黑人与亚洲人色ⅹvideos| 国产精品久久久久久户外露出| 久久久久久av无码免费网站下载| 欧美18—19sex性hd| 欧美一区二区三区免费视频| 在线免费观看a级片| 99tv成人| 国产成人激情小视频| 免费av一级片| 中文字幕在线一区二区三区| 日本www在线视频| 精品午夜视频| 日韩中文字幕免费| 9i看片成人免费看片| 国产精品123| 在线观看成人一级片| 性欧美18xxxhd| 欧美成人欧美edvon| 三级黄色片在线观看| 亚洲一区二区三区免费在线观看 | 国产精品久久婷婷| 久久久久久久综合日本| 日本免费a视频| aa亚洲一区一区三区| 亚洲人成网站在线播| 国产午夜精品一区二区理论影院| 精品亚洲成a人| 色姑娘综合网| 久久91导航| 亚洲精品日韩丝袜精品| 久久精品国产亚洲AV无码男同| 国精产品一区一区三区mba视频 | 免费看美女视频在线网站| 欧美午夜精品久久久久久久| 亚洲黄色小说在线观看| 91久久久精品国产| 国产视频观看一区| 在线观看免费版| 91精品办公室少妇高潮对白| 亚洲精品女人久久久| 亚洲福利免费| 精品久久久久久综合日本 | 亚洲午夜精品在线| www.欧美com| 欧美久久久久| 国产成人免费观看| 超碰在线97国产| 精品久久久三级丝袜| 久久久久久久极品内射| 国产精品99久久久| 真实国产乱子伦对白视频| 中文字幕亚洲在线观看 | 亚洲1234区| 亚洲精品自产拍| 中文字幕手机在线视频| 国产亚洲成av人在线观看导航| 欧美色图色综合| 久9久9色综合| 国产精品私拍pans大尺度在线| 日本最新在线视频| 91精品国产乱| 中文字幕一区二区三区手机版 | 天天操天天干天天操天天干| 日本欧美在线观看| 在线视频福利一区| 亚洲小说春色综合另类电影| 久久久久久九九九| 亚洲人成色777777精品音频| 色综合久久88色综合天天6| 国产小视频自拍| 激情综合网av| 国产精品国产三级国产专区51| 荡女精品导航| 国产不卡视频在线| 欧美激情二区| 欧美精品一区二区三区四区| 精品人妻一区二区色欲产成人| 国产欧美一区二区三区鸳鸯浴| 中文字幕亚洲欧洲| 亚洲美女啪啪| 亚洲精品一品区二品区三品区| 国产精品久久免费视频| 久久欧美在线电影| 国产精品麻豆一区二区三区| 宅男在线国产精品| 国产美女激情视频| 亚洲欧美国产77777| 一出一进一爽一粗一大视频| 青青国产91久久久久久| 男人草女人视频| 日韩动漫一区| 成人在线视频网| 韩日毛片在线观看| 久久综合伊人77777| 日本乱子伦xxxx| 黑人精品欧美一区二区蜜桃| 日韩中文字幕在线不卡| 婷婷亚洲精品| 91探花福利精品国产自产在线| 爱啪啪综合导航| 久久精品国产亚洲7777| 日韩porn| 日韩欧美美女一区二区三区| 天天干天天色综合| 一区二区三区蜜桃网| 国产伦理片在线观看| 大桥未久av一区二区三区中文| 亚洲老女人av| 亚洲一区自拍| 日韩专区第三页| 日韩欧美精品综合| 精品国产免费一区二区三区 | 国产精品视频免费在线观看| 欧美午夜aaaaaa免费视频| 一区二区三区视频在线观看视频| 欧美va天堂va视频va在线| www.日韩一区| 岛国精品视频在线播放| 青娱乐国产在线| 国产精品三级视频| 中文字幕在线观看网址| 国产成人久久精品77777最新版本| 无码内射中文字幕岛国片| 亚洲第一黄网| 久久久久久久香蕉| 91精品国产91久久久久久密臀| 日韩高清av电影| 伊人成综合网yiren22| 国产精品国产三级欧美二区| 成人在线精品| 国产日韩欧美中文在线播放| 丝袜美腿诱惑一区二区三区| 午夜精品久久久久久久99热浪潮| 亚洲夜夜综合| 免费99精品国产自在在线| 午夜小视频在线| 中文字幕日韩有码| eeuss影院www在线观看| 亚洲人成在线观看网站高清| 午夜视频在线播放| 亚洲国产精品字幕| 无码国精品一区二区免费蜜桃| 精品av久久707| 日本黄色大片视频| 亚洲第一网站免费视频| 天堂成人在线观看| 亚洲精品国精品久久99热 | 国产中文一区二区三区| 国产乱女淫av麻豆国产| 麻豆精品新av中文字幕| 美女福利精品视频| 538任你躁在线精品视频网站| 国产精品久久久久一区二区三区| 中国女人特级毛片| 亚洲国产成人在线| 亚洲少妇xxx| 亚洲免费电影在线| 久久久精品国产sm调教| 亚洲五月六月丁香激情| 日本熟女一区二区| 日韩欧美一区二区三区| 成人毛片一区二区三区| 欧美揉bbbbb揉bbbbb| 国产影视一区二区| 日韩午夜中文字幕| 人妻一区二区三区免费| 日韩大陆毛片av| 大乳在线免费观看| 日韩三级影视基地| 黄页在线观看免费| 欧美亚洲午夜视频在线观看| 国产综合色区在线观看| 国产精品视频网| 九九九九九九精品任你躁| 99在线观看视频| 小嫩嫩12欧美| 亚州欧美一区三区三区在线| 91精品一区国产高清在线gif| 蜜臀精品一区二区| 久久精品盗摄| 在线视频观看91| 成人性视频免费网站| 在哪里可以看毛片| 亚洲人xxxx| 毛片毛片女人毛片毛片| 欧美日韩中文一区| 国产成人手机在线| 在线精品高清中文字幕| 色呦呦在线观看视频| 国产福利精品av综合导导航| 国产电影一区二区| 蜜桃精品久久久久久久免费影院| 999国产精品永久免费视频app| 99久久免费观看| 免费观看在线综合| 日韩少妇一区二区| 中文字幕一区二区三区色视频 | 少妇献身老头系列| 欧美国产一区二区在线观看| 欧美激情一区二区视频| 色婷婷av久久久久久久| 国产浮力第一页| 亚洲一区www| 999福利在线视频| 国产欧美日韩专区发布| 色综合久久中文| 欧美日韩dvd| 久久精品国产77777蜜臀| 国产白嫩美女无套久久| 成人免费在线视频| 免费精品一区二区| 亚洲成色999久久网站| 在线观看二区| 欧洲成人免费aa| 国产福利一区二区精品秒拍| 正在播放国产精品| 日韩高清不卡一区二区三区| 日批在线观看视频| 亚洲黄色av一区| 一区二区三区黄色片| 午夜激情在线播放| 成人网页在线免费观看| 国产精品片aa在线观看| xxxx18hd亚洲hd捆绑| 国产美女av一区二区三区| 99精品欧美一区二区| 精品福利免费观看| 黄色av小说在线观看| 久久国产精品偷| 日本午夜精品久久久久| 色女孩综合网| 日韩精品色哟哟| 91网站免费视频| 都市激情亚洲色图| 五十路在线观看| 91国语精品自产拍在线观看性色| 日韩精品视频在线看| 欧洲美女和动交zoz0z| 精品一区二区在线免费观看| 成人性视频免费看| 欧美日韩在线播放三区四区| 成年人在线观看视频| 国产精品18久久久久久麻辣| 免费精品国产| 黄色a级片免费| 久久这里只有精品6| 国产精品男女视频| 亚洲色图在线观看| 欧美va在线观看| 日韩久久在线| 久久国内精品自在自线400部| 老司机精品免费视频| 91精品久久久久久久99蜜桃| 大地资源网3页在线观看| 91香蕉嫩草影院入口| 欧美一区91| www男人天堂| 精品久久久久久久久久久久| 色视频在线观看免费| 国产精品18久久久久久首页狼| 日韩精品dvd| 亚洲精品mv在线观看| 亚洲精品网站在线观看| 亚洲精品国产精| 91产国在线观看动作片喷水| 蜜桃成人av| 亚洲最大天堂网| 亚洲一二三四区不卡| 天天干天天爱天天操| 欧美与黑人午夜性猛交久久久| 国产一区二区精品久| www.99r| 亚洲在线视频网站| 日本中文字幕电影在线观看| 国产精品久久久久久av福利| 亚洲激情久久| 国产三级国产精品| 欧美日韩一本到| 黄网站在线观| 五月天亚洲综合| 国产69精品久久久久777| 51国产偷自视频区视频| 色噜噜狠狠色综合网图区| 一区二区三区在线免费看| 国产亚洲天堂网| 亚洲丝袜精品丝袜在线| 免费观看黄一级视频| 国产精品久久久久久av| 红桃视频国产精品| 中字幕一区二区三区乱码| 日韩欧美亚洲国产另类 | 国产精品久久久久久久久久三级 | 男女猛烈激情xx00免费视频| 久久久久久久精| 99久久免费国产精精品| 日本一区二区在线播放| 一级欧洲+日本+国产| 在线免费观看麻豆| 日韩欧美一级二级三级| 素人一区二区三区| 男人添女人荫蒂免费视频| 欧美激情资源网| 人妻视频一区二区三区| 国产噜噜噜噜噜久久久久久久久| 亚洲成人直播|