Incompréhension du stockage isolé

Ceci est une discussion entre moi et moi pour comprendre un problème de stockage isolé . Pouvez-vous m’aider à me convaincre du stockage isolé?

Il s’agit d’un code écrit pour une application Windows Forms (lecteur) qui lit le stockage isolé d’une autre application Windows Forms (writer) signée. Où est la sécurité si le lecteur peut lire le fichier de l’auteur? Je pensais que seul le code signé pouvait accéder au fichier!

Si toutes les applications .NET naissent égales et disposent de toutes les permissions d’access au stockage isolé, où se trouve la sécurité? Si je peux installer et exécuter un fichier EXE depuis Isolated Storage, pourquoi je n’installe pas de virus et ne l’exécute pas, je suis sûr d’accéder à cette zone. Mais le virus ou tout ce qui n’est pas fiable pour accéder au rest du système de fichiers, il ne peut accéder qu’à la mémoire, ce qui est assez dangereux.

Je ne vois aucune différence entre utiliser le dossier de données d’application pour enregistrer l’état et utiliser le stockage isolé, sauf un long chemin désagréable !!

Je veux essayer de donner un faible niveau de confiance au code de lecteur et à un nouveau test, mais ils ont dit “Le stockage isolé est en fait créé pour donner aux applications peu fiables le droit de sauvegarder leur état”.

Code lecteur:

private void button1_Click(object sender, EventArgs e) { Ssortingng 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(); } 

Écrivain:

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

Bien sûr, vous pouvez accéder à n’importe quel emplacement (connu) du disque dur en utilisant votre code de lecteur, en supposant que vous disposez des permissions adéquates pour accéder à cet emplacement.

Il n’y a pas d’permissions spéciales appliquées à la zone IsolatedStorage, mais certaines règles s’appliquent aux applications à faible niveau de confiance qui utilisent IsolatedStorage comme il était destiné à être utilisé. Il n’y a absolument rien qui vous empêche de chiffrer ce que vous stockez là si vous voulez le garder privé.

Edit: consultez CLR Inside Out – Stockage isolé dans les applications hors navigateur Silverlight 2 et Silverlight: magasin de données local .

Je suis d’accord sur votre “malentendu” dans le titre; Je pense que vous comprenez mal le but du stockage isolé.

Si je comprends bien, le terme “isolé” ne signifie pas “un stockage privé auquel les autres programmes ne peuvent pas accéder”. Cela signifie un “bac à sable” pour donner à votre programme peu fiable un endroit où il peut enregistrer des données lorsqu’il n’est pas autorisé à écrire ailleurs.