孤立存储误解

9
这是我和自己之间的讨论,旨在理解一个与隔离存储有关的问题。能否帮我说服自己相信隔离存储的优点?
这是为Windows Forms应用程序(读取器)编写的代码,该应用程序读取了另一个已签名的Windows Forms应用程序(写入器)的隔离存储。如果读取器可以读取写入器的文件,那么安全性在哪里?我认为只有签名的代码才能访问该文件!
如果所有.NET应用程序都是平等的,并且都具有访问隔离存储的所有权限,那么安全性在哪里?如果我可以从隔离存储安装和运行EXE文件,为什么我不安装病毒并运行它,我被信任访问这个区域。但是病毒或其他恶意软件将无法获得访问其余文件系统的信任,它只能访问内存,这已经足够危险了。
除了一个冗长而丑陋的路径之外,我看不出使用应用程序数据文件夹来保存状态和使用隔离存储之间的任何区别!
我想尝试向读取器代码提供低权限并重新测试,但他们说“实际上创建隔离存储是为了让低信任的应用程序有权保存其状态”。
读取器代码:
 private void button1_Click(object sender, EventArgs e)
 {
     String path = @"C:\Documents and Settings\All Users\Application Data\IsolatedStorage\efv5cmbz.ewt\2ehuny0c.qvv\StrongName.5v3airc2lkv0onfrhsm2h3uiio35oarw\AssemFiles\toto12\ABC.txt";
     StreamReader reader = new StreamReader(path);
     var test = reader.ReadLine();
     reader.Close();
 }

翻译者:

private void button1_Click(object sender, EventArgs e)
{
    IsolatedStorageFile isolatedFile = IsolatedStorageFile.GetMachineStoreForAssembly();
    isolatedFile.CreateDirectory("toto12");

    IsolatedStorageFileStream isolatedStorage = new IsolatedStorageFileStream(@"toto12\ABC.txt", System.IO.FileMode.Create, isolatedFile);
    StreamWriter writer = new StreamWriter(isolatedStorage);
    writer.WriteLine("Ana 2akol we ashrab kai a3eesh wa akbora");
    writer.Close();
    writer.Dispose();
}
2个回答

12

我同意你在标题中的“误解”,我认为你误解了隔离存储的目的。

据我理解,“隔离”并不意味着“其他程序无法访问的私有存储”。它指的是一个“沙盒”,为您的低信任程序提供一个可以保存数据的地方,当它可能没有权限写入其他地方时使用。


2

然而,将文件保存到应用程序数据和隔离存储之间没有区别,因为默认情况下,您可以在不需要权限的情况下将文件保存到应用程序数据文件夹中。 - Costa
嗯...你似乎还是有点没有理解到重点?IsolatedStorage旨在用于低信任的Silverlight应用程序,这些应用程序无法像你的文件读取代码所示那样对文件系统进行开放式访问。请查看我的编辑,其中包含一些有用的链接。 - slugster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接