從編寫ABAP程序開始,我知道以下方法是程序的「退出」,因此我選擇相應的名稱。允許執行外部接口實現:有哪些風險?
假設,在.NET中,
1)定義一個接口
namespace Exits {
public interface Exit {
int exitMethod(string s); // signature serves as example only
}
}
2)提供了一些方法來應用程序的用戶通過筆試用戶名 裝配ExitImplementation.dll
和一個類的名稱,如myClass : exit
,實現接口退出,到您的應用程序。例如。作爲命令行參數或以某種形式。
您存儲用戶組件的string assemblyName
名稱和類(包括命名空間)中string theImplementation
名稱,然後加載它的執行它:
3)
Assembly assembly = Assembly.LoadFrom(assemblyName);
// assuming assembly is deployed by user into folder where application resides
Exit theExitImplementation = assembly.CreateInstance(theImplementation) as Exit;
int k = theExitImplementation.exitMethod("whatever");
(第一個問題,這個技巧有一個不屬於ABAP世界的名稱,它叫做什麼?:-))
我想知道的是讓你的應用程序執行這個操作所帶來的風險用戶代碼(原諒我以防萬一這是一個天真的問題,我仍然是新來的.Net)。假設輸出只是一些消息代碼,以確定某些日誌輸出的消息。
假設作爲部署場景的一些公司使用該應用程序進行業務,該公司的一些員工編寫退出實施。如果該員工想要造成損害,將會面臨什麼風險:
- 只是在日誌中有錯誤的信息?
- 應用程序的類實例的內容?
- 應用程序正在運行的PC資源?
- 更糟?
這是我的印象,答案是4.不是嗎? myClass獲得執行的oppurtunity,因此可以基本上做任何應用程序可以執行的操作,這些操作由運行原始應用程序的用戶啓動。是否有防止這種情況的手段?
如果是這樣:是否有任何區別(如果是這樣,哪個),出口的簽名是固定的,並且該方法的輸入不能在該方法中更改? 此方法意圖不允許動態定義類型。
這種方法,也是意圖,只允許輸入不能改變。 假設字符串參數被調用者可以修改的其他類型替換,如StringBuilder。這是否增加了風險?
是否有更復雜的(標準)技術來降低此方法的風險?有其他方法嗎?
什麼是ABAP ???? – renatoargh
Hrmmm。 ABAP是SAP世界的編程語言。 – Thomas
甚至有一個ABAP標籤:-) – Thomas