这是我和我之间为了解Isolated Storage问题而进行的讨论。你能帮我说服隔离存储吗?
这是为Windows窗体应用程序(读取器)编写的代码,用于读取已签名的另一个Windows窗体应用程序(编写器)的独立存储。如果读者可以阅读作者的文件,那么安全性在哪里?我以为只有签名的代码才能访问该文件!
如果所有.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();
}
答案 0 :(得分:12)
我同意你对标题中的“误解”;我认为你误解了隔离存储的目的。
据我了解,“隔离”不表示“其他程序无法访问的私人存储”。这意味着一个“沙盒”可以为您的低信任程序提供一个可以在没有权限写入其他地方时保存数据的地方。
答案 1 :(得分:2)
当然,假设您有足够的权限访问该位置,您可以使用您的阅读器代码访问硬盘上的任何(已知)位置。
没有特殊权限应用于IsolatedStorage区域,但是有些规则适用于使用IsolatedStorage的低信任应用程序,以便如何使用它。如果你想把它保密,那么绝对没有什么可以阻止你加密那里存储的内容。
修改:结帐CLR Inside Out - Isolated Storage In Silverlight 2和Silverlight out-of-browser apps: Local Data Store。