什麼是反射機制反射機制的安全性

General 更新 2024年11月25日

  反射機制主要是指程式可以訪問、檢測和修改它本身狀態或行為的一種能力。那麼你對反射機制瞭解多少呢?以下是由小編整理關於什麼是反射機制的內容,希望大家喜歡!

  反射機制的概念

  在電腦科學領域,反射是指一類應用,它們能夠自描述和自控制。也就是說,這類應用通過採用某種機制來實現對自己行為的描述***self-representation***和監測***examination***,並能根據自身行為的狀態和結果,調整或修改應用所描述行為的狀態和相關的語義。

  反射機制也被應用到了視窗系統、作業系統和檔案系統中。 反射本身並不是一個新概念,它可能會使我們聯想到光學中的反射概念,儘管電腦科學賦予了反射概念新的含義,但是,從現象上來說,它們確實有某些相通之處,這些有助於我們的理解。同一般的反射概念相比,電腦科學領域的反射不單單指反射本身,還包括對反射結果所採取的措施。所有采用反射機制的系統***即反射系統***都希望使系統的實現更開放。可以說,實現了反射機制的系統都具有開放性,但具有開放性的系統並不一定採用了反射機制,開放性是反射系統的必要條件。一般來說,反射系統除了滿足開放性條件外還必須滿足原因連線***Causally-connected***。所謂原因連線是指對反射系統自描述的改變能夠立即反映到系統底層的實際狀態和行為上的情況,反之亦然。開放性和原因連線是反射系統的兩大基本要素。

  Java中,反射是一種強大的工具。它使您能夠建立靈活的程式碼,這些程式碼可以在執行時裝配,無需在元件之間進行源代表連結。反射允許我們在編寫與執行時,使我們的程式程式碼能夠接入裝載到JVM中的類的內部資訊,而不是原始碼中選定的類協作的程式碼。這使反射成為構建靈活的應用的主要工具。但需注意的是:如果使用不當,反射的成本很高。

  反射機制的安全性

  在處理反射時安全性是一個較複雜的問題。反射經常由框架型程式碼使用,由於這一點,我們可能希望框架能夠全面接入程式碼,無需考慮常規的接入限制。但是,在其它情況下,不受控制的接入會帶來嚴重的安全性風險,例如當代碼在不值得信任的程式碼共享的環境中執行時。

  由於這些互相矛盾的需求,Java程式語言定義一種多級別方法來處理反射的安全性。基本模式是對反射實施與應用於原始碼接入相同的限制:

  n 從任意位置到類公共元件的接入

  n 類自身外部無任何到私有元件的接入

  n 受保護和打包***預設接入***元件的有限接入

  不過至少有些時候,圍繞這些限制還有一種簡單的方法。我們可以在我們所寫的類中,擴充套件一個普通的基本類java.lang.reflect.AccessibleObject 類。這個類定義了一種setAccessible方法,使我們能夠啟動或關閉對這些類中其中一個類的例項的接入檢測。唯一的問題在於如果使用了安全性管理器,它將檢測正在關閉接入檢測的程式碼是否許可了這樣做。如果未許可,安全性管理器丟擲一個例外。

  下面是一段程式,在TwoString 類的一個例項上使用反射來顯示安全性正在執行:

  public class ReflectSecurity {

  public static void main***String[] args*** {

  try {

  TwoString ts = new TwoString***"a", "b"***;

  Field field = clas.getDeclaredField***"m_s1"***;

  //field.setAccessible***true***;

  System.out.println***"Retrieved value is " +field.get***inst******;

  } catch ***Exception ex*** {

  ex.printStackTrace***System.out***;

  } } }

  如果我們編譯這一程式時,不使用任何特定引數直接從命令列執行,它將在field .get***inst***呼叫中丟擲一個IllegalAccessException異常。如果我們不註釋field.setAccessible***true***程式碼行,那麼重新編譯並重新執行該程式碼,它將編譯成功。最後,如果我們在命令列添加了JVM引數-Djava.security.manager以實現安全性管理器,它仍然將不能通過編譯,除非我們定義了ReflectSecurity類的許可許可權。

反射機制的安全性

仿生學的研究方法
讀魯賓遜漂流記有感
相關知識
什麼是美術教育美術教育的重要性
什麼是財務稽核財務稽核的重要性
什麼是撥號上網撥號網路的安裝
什麼是房屋買賣合同糾紛的懲罰性賠償標準***2***
什麼是學歷教育學歷教育的重要性
什麼是立體思維立體思維的必要性
什麼是強化理論強化理論的兩面性
什麼是反射機制反射機制的安全性
什麼是滑動視窗滑動視窗的機制
什麼是中小板塊中小板塊的制度