Exportar (0) Imprimir
Expandir todo

FileIOPermission (Clase)

Actualización: noviembre 2007

Controla la capacidad de acceso a archivos y carpetas. No se puede heredar esta clase.

Espacio de nombres:  System.Security.Permissions
Ensamblado:  mscorlib (en mscorlib.dll)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class FileIOPermission : CodeAccessPermission, 
	IUnrestrictedPermission
/** @attribute SerializableAttribute */ 
/** @attribute ComVisibleAttribute(true) */
public final class FileIOPermission extends CodeAccessPermission implements IUnrestrictedPermission
public final class FileIOPermission extends CodeAccessPermission implements IUnrestrictedPermission

Este permiso distingue entre los siguientes cuatro tipos de acceso de E/S proporcionados por FileIOPermissionAccess:

  • Read: acceso de lectura al contenido del archivo o acceso a la información relativa al mismo, por ejemplo, su longitud o la hora en que se modificó por última vez.

  • Write: acceso de escritura al contenido del archivo o acceso a la modificación de información relativa al mismo, como por ejemplo su nombre. También permite la eliminación y la sobrescritura.

  • Append: capacidad para escribir sólo al final de un archivo. Sin capacidad de lectura.

  • PathDiscovery: acceso a la información de la propia ruta. De esta forma, se ayuda a proteger la información confidencial de la ruta de acceso, como los nombres de usuario, así como la información sobre la estructura de directorios que aparece en la ruta. Este valor no concede acceso a los archivos o las carpetas que representa la ruta de acceso.

6485ct6t.alert_note(es-es,VS.90).gifNota:

Dar acceso Write a un ensamblado es similar a concederle plena confianza. Si una aplicación no debe escribir en el sistema de archivos, no debería tener el acceso Write.

Todos estos permisos son independientes, lo que significa que los derechos para uno no implican derechos para otro. Por ejemplo, el permiso Write no implica el permiso Read ni Append. Si se desea más de un permiso, éstos se pueden combinar a través de la operación OR bit a bit, como se muestra en el siguiente ejemplo de código. Los permisos de acceso a archivos se definen en términos de rutas de acceso absolutas canónicas; las llamadas siempre se deben realizar con rutas canónicas de acceso a archivos.

FileIOPermission describe las operaciones protegidas en archivos y carpetas. La clase File ayuda a proporcionar acceso seguro a archivos y carpetas. La comprobación de acceso de seguridad se realiza al crear el identificador para el archivo. Al hacer la comprobación en el momento de la creación, se minimiza el efecto que la comprobación de seguridad tiene sobre el rendimiento. La apertura de un archivo sucede una vez, mientras que la lectura y la escritura pueden producirse varias veces. Una vez que el archivo está abierto, no se hace ninguna comprobación más. Si el objeto se pasa a un llamador que no es de confianza puede producirse un uso indebido. Por ejemplo, los identificadores de archivo no deben almacenarse en variables estáticas globales públicas, donde el código con menos permisos pueda tener acceso a ellos.

FileIOPermissionAccess especifica las acciones que pueden realizarse en el archivo o carpeta. Además, estas acciones pueden combinarse mediante una operación OR bit a bit para formar instancias complejas.

El acceso a una carpeta implica el acceso a todos los archivos que contiene, así como el acceso a todos los archivos y carpetas de sus subcarpetas. Por ejemplo, el acceso Read a C:\folder1\ implica el acceso Read a C:\folder1\file1.txt, C:\folder1\folder2\, C:\folder1\folder2\file2.txt y así sucesivamente.

6485ct6t.alert_caution(es-es,VS.90).gifPrecaución:

UnrestrictedFileIOPermission concede permiso para todas las rutas de acceso de un sistema de archivos, incluidos varios nombres de rutas de acceso que pueden utilizarse para obtener acceso a un archivo determinado. Para que Deny tenga acceso a un archivo, debe usar Deny en todos las rutas de acceso posibles al archivo. Por ejemplo, si se asigna \\server\share a la unidad de red X y se desea aplicar el método Deny al acceso a \\server\share\file, deberá utilizar Deny en \\server\share\file, X:\file y cualquier otra ruta de acceso que se pueda utilizar para obtener acceso al archivo. Una técnica mejor para tratar varias rutas de acceso es utilizar una combinación de PermitOnly y Deny. En el ejemplo anterior, se puede aplicar el método PermitOnly a \\server\share y, después, el método Deny a \\server\share\file, lo que elimina por completo otras rutas de acceso. Para obtener más información sobre este tema y el uso del método PermitOnly con Deny, vea "Canonicalization Problems Using Deny" en Utilizar el método Deny.

6485ct6t.alert_note(es-es,VS.90).gifNota:

El sistema de seguridad convierte las rutas de acceso del formato \\server\share\bogusfolder\..\file al formato canónico \\server\share\file, por lo que sólo se ha de aplicar el método Deny a la ruta de acceso canónica, \\server\share\file, y no es necesario tener en cuenta las variaciones sintácticas que se pueden utilizar para especificar la misma ruta de acceso. El operador punto (.) puede aparecer individualmente, en múltiplos o en combinación con espacios en blanco finales. Se omiten los espacios en blanco cuando aparecen detrás del operador punto. Un único punto, como en la dirección C:\temp\test\.\test.txt se omite, dando como resultado la dirección C:\temp\test\test.txt. Varios operadores punto se tratan como "..", omitiendo el directorio que inmediatamente anterior. \test.txt da como resultado la ruta C:\temp\test.txt.

6485ct6t.alert_note(es-es,VS.90).gifNota:

Deny es más efectivo cuando se usa con el sistema de archivos NTFS de Windows. NTFS ofrece mucha más seguridad que FAT32. Para obtener más información sobre NTFS, consulte la documentación de Windows.

Los ejemplos siguientes muestran el código que utiliza FileIOPermission. Después de las dos siguientes líneas de código, el objeto f representa el permiso para leer todos los archivos ubicados en los discos locales del equipo cliente. A continuación, en el ejemplo de código se solicita el permiso para determinar si la aplicación tiene permiso para leer los archivos.

FileIOPermission f = new FileIOPermission(PermissionState.None);
f.AllLocalFiles = FileIOPermissionAccess.Read;
try
{
    f.Demand();
}
catch (SecurityException s)
{
    Console.WriteLine(s.Message);
}



FileIOPermission f = new FileIOPermission(PermissionState.None);
f.set_AllLocalFiles(FileIOPermissionAccess.Read);


Después de las dos siguientes líneas de código, el objeto f2 representa los permisos para leer C:\test_r, y para leer y escribir en C:\example\out.txt. Read y Write representan los permisos de archivo y carpeta, tal como se describió anteriormente. Después de crear el permiso, el código lo solicita para determinar si la aplicación tiene derecho a leer y escribir en el archivo.

FileIOPermission f2 = new FileIOPermission(FileIOPermissionAccess.Read, "C:\\test_r");
f2.AddPathList(FileIOPermissionAccess.Write | FileIOPermissionAccess.Read, "C:\\example\\out.txt");
try
{
    f2.Demand();
}
catch (SecurityException s)
{
    Console.WriteLine(s.Message);
}


FileIOPermission f2 = 
    new FileIOPermission(FileIOPermissionAccess.Read, "C:\\test_r");
f2.AddPathList(FileIOPermissionAccess.Write | 
    FileIOPermissionAccess.Read, "C:\\example\\out.txt");


System.Object
  System.Security.CodeAccessPermission
    System.Security.Permissions.FileIOPermission

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft