Il Command Pattern è ampiamente utilizzato per creare applicazioni robuste e vendibili. Tuttavia, vedo le linee guida in questo articolo MSDN che potrebbero consentire a un chiamante di richiamare un comando tardato ... abilitando il chiamante a chiamare qualsiasi assembly, classe e metodo disponibile per il processo in esecuzione:
[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");
}
}
Poiché questo articolo è stato pubblicato nel 2004 e lo schema sottostante era sviluppato nel 1995 , ci deve essere un molto software sviluppato in questo modo. Al di fuori di SDLC qual è il modo giusto per proteggere l'infrastruttura IT dal software sviluppato in questo modo?
C'è qualche controllo specifico su .NET o Java che può essere fatto per identificare l'esecuzione tardiva ... atipica del servizio in esecuzione?
Posso eseguire la scansione di MSIL (o equivalente Java) per questo tipo di chiamata?