Effective C# 原则47:选择安全的代码
2009-02-19 08:17:21 来源:WEB开发网实际上,受信任的程序集可以访问他们自己特殊的独立存储区域,但不能是文件系统的其它地方。独立的存储目录是隐藏在其它程序集以及其它用户中的。你可以使用System.IO.IsolatedStorage名字空间中的类来访问独立的存储。IsolatedStorageFile类包含的方法可以很简单的访问System.IO.File类。实际上,它是从 System.IO. FileStream 类派生下来的。写内容到独立存储的代码几乎与写内容到任何文件里是一样的:
IsolatedStorageFile iso =
IsolatedStorageFile.GetUserStoreForDomain( );
IsolatedStorageFileStream myStream = new
IsolatedStorageFileStream( "SavedStuff.txt",
FileMode.Create, iso );
StreamWriter wr = new StreamWriter( myStream );
// several wr.Write statements elided
wr.Close();
读操作也是完全和其它使用文件I/O相似的:
IsolatedStorageFile isoStore =
IsolatedStorageFile.GetUserStoreForDomain( );
string[] files = isoStore.GetFileNames( "SavedStuff.txt" );
if ( files.Length > 0 )
{
StreamReader reader = new StreamReader( new
IsolatedStorageFileStream( "SavedStuff.txt",
FileMode.Open,isoStore ) );
// Several reader.ReadLines( ) calls elided.
reader.Close();
}
你可以独立存储来持久大小合适的数据元素,这些元素可以被代码部分信任,用于从一个安全分离的本地磁盘上的某个地方存储和载入信息。.Net环境为每个程序定义和限制了独立存储的大小。这可以预防一些恶意的代码占用磁盘空间,让系统就得不可用。独立存储对于其它程序和其它用户来说是不可见的。也就是说,它不应用于要管理员手动操作才能布署或者配置设置的情况。即使这它是隐藏的,然而,独立存储对于从受信任的用户那来里来的非托管代码来说也是不受保护的。不要用独立存储来存储一些高度机密的内容,除非你的程序给它加过密。
在文件系统中创建一个可能要许可安全策略的程序集时,要独立存储流的内容。当你的程序集可能在web上运行,或者可能被运行在web上的代码访问时,应该考虑使用独立存储。
你可能须要正确的使用一个受保护的资源。一般情况下,访问这些资源要指出你的程序要被完全信任。唯一可选的就是完全避免使用这些受保护的资源。例如,考虑windows的注册表,如果你和程序须要访问注册表,你必须安装你的程序到最终用户的机器上,这样才能有必须的权限来访问注册表。你想简单点,从web上运行的程序是不能建立注册表的修改的。安全策略就应该是这样的。
.Net的安全模型意味着你的程序的行为是要权得进行核对的。注意你的程序所要求的权利,而且试着最小化它们。不必要求你不使用的权利。你的程序集越是少的要求受保护资源,那么它们就越是可以保证安全策略异常不抛出。避免使用机密资源,如果可能,要考虑其它可选方案。当你在某个算法上确实须要更高安全的许可时,应该独立这些代码到它们自己的程序集中。
- ››选择好的广告联盟:选择广告联盟理解掌握的六大绝招...
- ››选择谁? 揭秘90后必备的音乐播放器
- ››选择性关闭Win 7视频预览 节约系统资源
- ››选择适合的SRAM存储器的技巧
- ››Effective C# 原则40:根据需求选择集合
- ››Effective C# 原则41:选择DataSet而不是自定义的...
- ››Effective C# 原则42:使用特性进行简单的反射
- ››Effective C# 原则43:请勿滥用反射
- ››Effective C# 原则44:创建应用程序特定的异常类
- ››Effective C# 第6章:杂项
- ››Effective C# 原则45:选择强异常来保护程序
- ››Effective C# 原则47:选择安全的代码
更多精彩
赞助商链接