1

在面试中,面试官问了我一个问题,即确保在 .net 中安全执行代码的组件是什么。我在谷歌尝试但失败了。谁能给我答案或链接?

我找到了一个word文档。我发现安全代码执行的组件是程序集加载器、代码验证器、JIT。它是否正确?

4

3 回答 3

1

看看 CLR 安全模型。微软有一篇关于它的好文章。

概括:

.NET Framework 的公共语言运行时具有自己的安全执行模型,不受其运行所在操作系统的限制。此外,与旧的基于主体的安全性不同,CLR 根据代码的来源而不是用户身份来实施安全策略。这种称为代码访问安全性的模型在当今的环境中是有意义的,因为在 Internet 上安装了如此多的代码,即使是受信任的用户也不知道该代码何时是安全的。

CLR 的安全基础架构

于 2012-07-11T14:02:21.673 回答
0

我脑海中的答案是Try-Catch块。您将希望按类型捕获异常以向用户提供有意义的输出(如果需要),但一般异常对于内部测试非常有用。

try
{
    /*Some code which could throw exceptions.*/
}
catch (Exception e)
{
    Console.WriteLine("Error: {0}\nStack Trace: {1}", e.Message, e.StackTrace);
}

但是,我只是不同意“安全执行”意味着不会崩溃的想法。

于 2012-07-11T14:04:52.063 回答
0

“安全执行代码”可能意味着很多事情。但我认为面试官要求的是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 )

于 2012-07-11T14:17:29.483 回答