2010-03-13 12 views
7

Esta es una discusión entre yo y yo para comprender un problema de Isolated Storage. ¿Me pueden ayudar a convencerme sobre el almacenamiento aislado?Malentendido de almacenamiento aislado

Código escrito para una aplicación de Windows Forms (lector) que lee el almacenamiento aislado de otra aplicación de Windows Forms (escritor) que está firmada. ¿Dónde está la seguridad si el lector puede leer el archivo del escritor? ¡Creo que solo el código firmado puede acceder al archivo!

Si todas las aplicaciones .NET nacen iguales y tienen todos los permisos para acceder al almacenamiento aislado, ¿dónde está la seguridad? Si puedo instalar y ejecutar un archivo EXE desde el Almacenamiento aislado, por qué no instalo un virus y lo ejecuto, confío en que tendré acceso a esta área. Pero el virus o lo que sea no será confiable para acceder al resto del sistema de archivos, solo puede acceder a la memoria, y esto es lo suficientemente peligroso.

No puedo ver ninguna diferencia entre utilizar la carpeta de datos de la aplicación para guardar el estado y usar el almacenamiento aislado, excepto una larga y desagradable ruta.

Quiero intentar dar poca confianza al código del lector y volver a probar, pero dijeron "El almacenamiento aislado realmente se creó para dar a la aplicación de baja confianza el derecho de guardar su estado".

lector de código:

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

escritor:

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

Respuesta

2

Por supuesto, puede acceder a cualquier ubicación (conocida) en el disco duro utilizando su código de lector, suponiendo que tiene los permisos adecuados para acceder a esa ubicación.

No hay permisos especiales aplicados al área IsolatedStorage, pero existen reglas que se aplican a las aplicaciones de bajo nivel de confianza que usan IsolatedStorage como estaba destinado a ser utilizado. No hay absolutamente nada que le impida cifrar lo que almacena allí si desea mantenerlo en privado.

Editar: echa un vistazo a CLR Inside Out - Isolated Storage In Silverlight 2 y Silverlight out-of-browser apps: Local Data Store.

+0

Aún así, no hay diferencia entre guardar el archivo en los datos de la aplicación y el almacenamiento aislado, porque de forma predeterminada puede guardar archivos en la carpeta de datos de la aplicación sin un permiso. – Costa

+0

Hmmm ... parece que aún te estás perdiendo el punto un poco? IsolatedStorage está diseñado para su uso con aplicaciones Silverlight de baja confianza que no tienen acceso abierto al sistema de archivos como se muestra en el código de lectura de archivo. Verifique mis ediciones para un par de enlaces útiles. – slugster

11

Estoy de acuerdo con el "malentendido" en el título; Creo que estás entendiendo mal el propósito del almacenamiento aislado.

Como yo lo entiendo, el "aislado" no no significa "almacenamiento privado que otros programas no pueden acceder". Significa una "caja de arena" para dar a su programa de poca confianza un lugar donde pueda guardar datos cuando podría no tener permiso para escribir en otro lugar.

Cuestiones relacionadas