这是我和自己之间的讨论,旨在理解一个与隔离存储有关的问题。能否帮我说服自己相信隔离存储的优点?
这是为Windows Forms应用程序(读取器)编写的代码,该应用程序读取了另一个已签名的Windows Forms应用程序(写入器)的隔离存储。如果读取器可以读取写入器的文件,那么安全性在哪里?我认为只有签名的代码才能访问该文件!
如果所有.NET应用程序都是平等的,并且都具有访问隔离存储的所有权限,那么安全性在哪里?如果我可以从隔离存储安装和运行EXE文件,为什么我不安装病毒并运行它,我被信任访问这个区域。但是病毒或其他恶意软件将无法获得访问其余文件系统的信任,它只能访问内存,这已经足够危险了。
除了一个冗长而丑陋的路径之外,我看不出使用应用程序数据文件夹来保存状态和使用隔离存储之间的任何区别!
我想尝试向读取器代码提供低权限并重新测试,但他们说“实际上创建隔离存储是为了让低信任的应用程序有权保存其状态”。
读取器代码:
这是为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();
}