在面试中,面试官问了我一个问题,即确保在 .net 中安全执行代码的组件是什么。我在谷歌尝试但失败了。谁能给我答案或链接?
我找到了一个word文档。我发现安全代码执行的组件是程序集加载器、代码验证器、JIT。它是否正确?
看看 CLR 安全模型。微软有一篇关于它的好文章。
概括:
.NET Framework 的公共语言运行时具有自己的安全执行模型,不受其运行所在操作系统的限制。此外,与旧的基于主体的安全性不同,CLR 根据代码的来源而不是用户身份来实施安全策略。这种称为代码访问安全性的模型在当今的环境中是有意义的,因为在 Internet 上安装了如此多的代码,即使是受信任的用户也不知道该代码何时是安全的。
我脑海中的答案是Try-Catch块。您将希望按类型捕获异常以向用户提供有意义的输出(如果需要),但一般异常对于内部测试非常有用。
try
{
/*Some code which could throw exceptions.*/
}
catch (Exception e)
{
Console.WriteLine("Error: {0}\nStack Trace: {1}", e.Message, e.StackTrace);
}
但是,我只是不同意“安全执行”意味着不会崩溃的想法。
“安全执行代码”可能意味着很多事情。但我认为面试官要求的是Code Access Security,这是 .net 环境的安全模型。
CAS 对于所有框架版本都不相同,是一个复杂的主题,需要在这里解释。基本上,它根据程序集和代码表示法、程序集来源、信任级别等允许或禁止代码执行。
你可以在这里得到一些介绍:
2.0 或 3.5 => http://msdn.microsoft.com/en-us/library/c5tk9z76(v=vs.90 )
4.0 或 4.5 => http://msdn.microsoft.com/en-us/library/c5tk9z76(v=vs.100 )