独立存储
可以在System.IO下找到的基本文件I/O功能提供了访问、存储和操作存储在层次结构的文件系统中的数据的能力,其中的文件可以通过使用唯一的路径来引用。对于一些应用程序(例如下载的Web应用程序和来自不可信来源的代码),基本文件系统不提供必要的隔离和安全性。独立存储是一种数据存储机制,它在代码和保存的数据之间定义了标准化的关联方式,从而提供隔离和安全性。
(1)隔离
当应用程序在文件中存储数据时,必须仔细选择文件名和存储位置,最大程度地减小其他应用程序获知该存储位置的可能性,从而避免因为受到攻击而导致数据损坏。独立存储提供了管理下载的Web应用程序文件的方法,以最大程度地减小存储冲突。
(2)部分受信任代码的安全风险
对部分受信任代码访问计算机文件系统的能力进行限制是很重要的。如果允许从Internet下载并运行的代码访问I/O功能,可能会使系统因为病毒和无意的破坏而受到攻击。
与文件访问相关的安全风险有时用访问控制列表(Access Control List,ACL)来表述,ACL限制了用户对文件的访问权限。然而,这种方法对于Web应用程序来说是不可行的,因为它需要管理员在运行该应用程序的所有系统上配置ACL。
(3)通过独立存储实现安全
管理员们可以使用为进行独立存储操作而设计的工具来配置文件存储空间,以及设置安全策略和删除未使用的数据。通过独立存储,代码不再需要使用唯一的路径来指定文件系统中的安全位置,就可以保护数据以防止未授权的访问,也不必通过硬编码来指定应用程序的存储区域的位置。通过使用独立存储,可以使部分受信任的应用程序以由计算机安全策略控制的方式存储数据。安全策略很少向这种代码授予使用标准I/O机制访问文件系统的权限。但是在默认情况下,会对在本地计算机、局域网或Internet中运行的代码授予使用独立存储的权限。Web应用程序还可以将独立存储和漫游用户配置文件一起使用,这将允许用户的独立存储区和配置文件一起漫游。
命名空间System.IO.IsolatedStorage包含了IsolatedStorageFile和IsolatedStorageFileStream类,应用程序可以使用这些类来访问独立存储区的文件和目录。关于独立存储的进一步讨论超出了本书的范围,在此不再赘述,有兴趣的读者可以查阅相关书籍。