2010-03-13 9 views
7

Dies ist eine Diskussion zwischen mir und mir zu einem Isolated Storage Problem zu verstehen. Kannst du mir helfen, mich von Isolated Storage zu überzeugen?Isolierte Speicher Missverständnis

Dies ist Code, der für eine Windows Forms-Anwendung (Reader) geschrieben wurde, die den isolierten Speicher einer anderen Windows Forms-Anwendung (Schreiber) liest, die signiert ist. Wo ist die Sicherheit, wenn der Leser die Datei des Schreibers lesen kann? Ich dachte nur signierter Code kann auf die Datei zugreifen!

Wenn alle .NET-Anwendungen gleich geboren werden und alle Berechtigungen haben, auf isolierten Speicher zuzugreifen, wo ist die Sicherheit dann? Wenn ich eine EXE-Datei von Isolated Storage installieren und ausführen kann, warum ich keinen Virus installiere und ihn ausführe, werde ich vertrauensvoll auf diesen Bereich zugreifen. Aber der Virus oder was auch immer nicht vertrauenswürdig sein wird, um auf den Rest des Dateisystems zuzugreifen, kann nur auf den Speicher zugreifen, und das ist gefährlich genug.

Ich sehe keinen Unterschied zwischen der Verwendung des Anwendungsdatenordners, um den Status zu speichern, und der Verwendung von Isolated Storage außer einem langen, unangenehmen Pfad !!

Ich möchte versuchen, Lesercode zu geben und Test zu wiederholen, aber sie sagten, dass "Isolierter Speicher tatsächlich geschaffen wird, um niedrig vertrauenswürdiger Anwendung das Recht zu geben, seinen Zustand zu speichern".

Reader Code:

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(); 
} 

Verfasser:

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(); 
} 

Antwort

2

Natürlich können Sie jeden (bekannten) Ort auf der Festplatte mit Ihrem Lesercode erreichen, vorausgesetzt, Sie haben die entsprechenden Berechtigungen, um auf diesen Ort zuzugreifen.

Es gibt keine speziellen Berechtigungen für den IsolatedStorage-Bereich, aber es gibt Regeln, die für Anwendungen mit geringem Vertrauen gelten, die IsolatedStorage verwenden, wie sie verwendet werden sollten. Es gibt absolut nichts, was Sie davon abhält, das zu verschlüsseln, was Sie dort speichern, wenn Sie es privat halten wollen.

Bearbeiten: check out CLR Inside Out - Isolated Storage In Silverlight 2 und Silverlight out-of-browser apps: Local Data Store.

+0

Noch immer besteht kein Unterschied zwischen dem Speichern der Datei mit App-Daten und isoliertem Speicher, da Sie standardmäßig Dateien ohne Genehmigung im App-Datenordner speichern können. – Costa

+0

Hmmm ... Sie scheinen immer noch den Punkt ein wenig zu verpassen? IsolatedStorage ist für die Verwendung mit Silverlight-Apps mit geringem Vertrauen gedacht, die keinen offenen Zugriff auf das Dateisystem haben, wie in Ihrem Dateilesecode dargestellt. Überprüfen Sie meine Änderungen auf ein paar nützliche Links. – slugster

11

ich über Ihre "falsch verstehen" im Titel zustimmen; Ich glaube, Sie verstehen den Zweck der isolierten Speicherung falsch.

Wie ich es verstehe, bedeutet die "isoliert" nicht bedeuten "privaten Speicher, dass andere Programme nicht zugreifen können". Es bedeutet eine "Sandbox", um Ihrem Programm mit geringem Vertrauen einen Platz zu geben, an dem es Daten speichern kann, wenn es nicht die Erlaubnis hat, woanders zu schreiben.

Verwandte Themen