WEB开发网
开发学院软件开发C语言 Effective C# 原则47:选择安全的代码 阅读

Effective C# 原则47:选择安全的代码

 2009-02-19 08:17:21 来源:WEB开发网   
核心提示:.Net运行时已经设计好了,一些怀有恶意的代码不能渗透到远程计算机上并执行,Effective C# 原则47:选择安全的代码,目前一些分部式系统依懒于从远程机器上下载和执行代码,如果你可以通过Internet或者以太网来发布你的软件,以确保当前栈上的所有的程序集有恰当的许可,让我们看一下内存以及文件系统,或者直接从w

.Net运行时已经设计好了,一些怀有恶意的代码不能渗透到远程计算机上并执行。目前一些分部式系统依懒于从远程机器上下载和执行代码。如果你可以通过Internet或者以太网来发布你的软件,或者直接从web上运行,但你须要明白CRL在你的程序集中的一些限制。如果CLR不是完全相信一个程序集,它会限制一些的行为。这些调用代码要有访问安全认证(CAS)。从另一方面来说,CLR强制要求基于角色的安全认证,这样这些代码才能或者不能在基于一个特殊的角色帐号下运行。

安全违例是运行时条件,编译器不能强制它们。幸运的是,它们绝不会在你的开发机器上出现,而且你所编译的代码从你自己的硬件上加载,这就是说,它有更高的信任级别。讨论所有潜在的.Net安全模型可以足足写上几本书,但你可以了解合理行为的一小部份,这样可以让你的程序集与.Net的安全模式更容易的交互。这些推荐只有在你创建一个组件程序库时,或者是开发一些通过网络发布的组件和程序集是才可以参考应用。

通过这个讨论,你应该记住.Net是一个托管的环境。这个环境保证有一个明确的安全环境。在安装时可以用.Net的配置策略来管理安全策略。大多数.Net框架库是在安装时对配置策略是安全信任的。它会查明安全问题,这就是说CLR可以检测IL而且确保它不会有什么潜在的危险行为,例如直接访问原始内存。它不会在访问本地资源时要求特殊的安全权限进行断言。你应该试着遵守同样的检测,如果你的代码不须要任何的安全权限,就应该避免使用CAS的API来对断定访问权限,否则你所做的只是降低程序性能。

你要使用CAS的API来访问一些受保护的资源,而这些资源是要求增加的特权的。很多通用的受保护资源是非托管的内存和文件系统。其它一些受保护的资源还包括数据库,网络端口,windows注册表,以及打印子系统。在每种情况下,如果调用代码没有足够的许可,试着访问这些资源都会引发一个异常。而且,访问这些资源可能引发运行时建立一个安全栈上的询访,以确保当前栈上的所有的程序集有恰当的许可。让我们看一下内存以及文件系统,讨论安全系统和机密问题中最实际的一些问题。

1 2 3  下一页

Tags:Effective 原则 选择

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接