El patrón de comando se usa ampliamente para crear aplicaciones robustas y vendibles. Sin embargo, veo una guía en este artículo de MSDN que podría permitirle a la persona que llama invocar un comando de enlace tardío ... permitiendo al llamante llamar a cualquier conjunto, clase y método disponible para el proceso en ejecución:
[Serializable()]
public class LateBoundCommand : ICommand
{
protected string AssemblyName;
protected string ClassName;
protected string MethodName;
protected object[] Parameters;
protected LateBoundCommand()
{
}
public LateBoundCommand(string assemblyName, string className,
string methodName)
{
AssemblyName = assemblyName;
ClassName = className;
MethodName = methodName;
}
// sets all parameter values
public void SetParameters(params object[] myParameters)
{
Parameters = myParameters;
}
public virtual void Execute()
{
Console.WriteLine("LateBoundCommand.Execute starting");
Assembly a = Assembly.LoadWithPartialName(AssemblyName);
Type TargetType = a.GetType(ClassName);
MethodInfo TargetMethod = TargetType.GetMethod(MethodName);
TargetMethod.Invoke(null, Parameters);
Console.WriteLine("LateBoundCommand.Execute complete");
}
}
Desde que se publicó este artículo en 2004, y el patrón subyacente fue desarrollado en 1995 , debe haber un Mucho software desarrollado de esta manera. Fuera de SDLC, ¿cuál es la forma correcta de proteger la infraestructura de TI del software desarrollado de esta manera?
¿Se puede realizar alguna auditoría específica de .NET o Java para identificar la ejecución tardía del enlace ... atípica del servicio en ejecución?
¿Puedo escanear la MSIL (o equivalente en Java) para este tipo de invocación?