我在代码审查中遇到了以下内容:
Type type = Type.GetType(typeName);
if (type == typeof(SomeKnownType))
DoSomething(...); // does not use type or typeName
Run Code Online (Sandbox Code Playgroud)
typeName源自AJAX请求,未经过验证.这是否会带来任何潜在的安全问题?例如,作为从任意程序集加载任意类型的结果,是否可能执行意外代码,或整个应用程序崩溃(拒绝服务)?
(我想一些小丑可能会尝试通过加载GAC中每个程序集的每种类型来耗尽可用内存.更糟糕的是什么?)
笔记:
type被仅使用如上所示.没有尝试实例化该类型.