从编写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