Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 孤立存储误解_C#_.net_Asp.net_Windows_Security - Fatal编程技术网

C# 孤立存储误解

C# 孤立存储误解,c#,.net,asp.net,windows,security,C#,.net,Asp.net,Windows,Security,这是我和我之间为了理解一个问题而进行的讨论。你能帮我说服我使用独立存储吗 这是为Windows窗体应用程序(读卡器)编写的代码,该应用程序读取另一个已签名的Windows窗体应用程序(写卡器)的独立存储。如果读卡器可以读取写卡器的文件,那么安全性在哪里?我以为只有经过签名的代码才能访问该文件 如果所有.NET应用程序生来平等,并且具有访问独立存储的所有权限,那么安全性在哪里?如果我可以从独立存储安装并运行EXE文件,为什么我不安装病毒并运行它,我可以访问此区域。但病毒或其他任何东西都不会被信任访

这是我和我之间为了理解一个问题而进行的讨论。你能帮我说服我使用独立存储吗

这是为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();
}
我同意你在标题中的“误解”;我认为你误解了隔离存储的目的


据我所知,“隔离”并不意味着“其他程序无法访问的私有存储”。它意味着一个“沙箱”,为您的低信任度程序提供一个存储数据的地方,当它可能没有权限写入其他地方时。

当然,您可以使用读卡器代码访问硬盘上的任何(已知)位置,前提是您有足够的权限访问该位置

没有对IsolatedStorage区域应用特殊权限,但有一些规则适用于使用IsolatedStorage的低信任应用程序。如果你想保密,绝对没有什么可以阻止你加密你存储在那里的东西


编辑:签出并。

仍然,将文件保存到应用程序数据和独立存储之间没有区别,因为默认情况下,您可以在没有权限的情况下将文件保存到应用程序数据文件夹。Hmmm。。。你似乎还是有点没抓住重点?IsolatedStorage适用于不具有文件系统开放访问权限的低信任Silverlight应用程序,如文件读取代码所示。检查我的编辑,以获得几个有用的链接。