stringtranslate.com

Seguridad de acceso al código

Code Access Security (CAS), en el marco Microsoft .NET , es la solución de Microsoft para evitar que código que no es de confianza realice acciones privilegiadas. Cuando CLR carga un ensamblaje , obtendrá evidencia del ensamblaje y la utilizará para identificar el grupo de códigos al que pertenece el ensamblaje. Un grupo de códigos contiene un conjunto de permisos (uno o más permisos ). El código que realiza una acción privilegiada realizará una demanda de acceso al código que hará que CLR suba por la pila de llamadas y examine el conjunto de permisos otorgado al ensamblaje de cada método en la pila de llamadas. Los grupos de códigos y conjuntos de permisos los determina el administrador de la máquina, quien define la política de seguridad. Microsoft considera CAS obsoleto y desaconseja su uso. [1] Tampoco está disponible en .NET Core y .NET.

Evidencia

La evidencia puede ser cualquier información asociada con una asamblea. Las evidencias predeterminadas que utiliza la seguridad de acceso al código .NET son:

Un desarrollador puede utilizar evidencia personalizada (la llamada evidencia de ensamblaje), pero esto requiere escribir un ensamblaje de seguridad y en la versión 1.1 [ se necesita aclaración ] de .NET esta función no funciona.

La evidencia basada en un hash del ensamblaje se obtiene fácilmente en código. Por ejemplo, en C# , se pueden obtener pruebas mediante la siguiente cláusula de código:

este . Obtener tipo (). Asamblea . Evidencia

Política

Una política es un conjunto de expresiones que utiliza evidencia para determinar la pertenencia a un grupo de códigos. Un grupo de códigos otorga un conjunto de permisos para los ensamblados dentro de ese grupo. Hay cuatro políticas en .NET:

Las primeras tres políticas se almacenan en archivos XML y se administran a través de la herramienta de configuración .NET 1.1 (mscorcfg.msc). La política final se administra mediante código para el dominio de aplicación actual.

La seguridad de acceso al código presentará la evidencia de un ensamblado para cada política y luego tomará la intersección (es decir, los permisos comunes a todos los conjuntos de permisos generados) como los permisos otorgados al ensamblado.

De forma predeterminada, las políticas Empresa, Usuario y Dominio de aplicación brindan total confianza (es decir, permiten que todos los ensamblados tengan todos los permisos) y la política Máquina es más restrictiva. Dado que se toma la intersección, esto significa que el conjunto de permisos final lo determina la política de la Máquina.

Tenga en cuenta que el sistema de políticas se ha eliminado en .NET Framework 4.0. [2]

Grupo de códigos

Los grupos de códigos asocian una prueba con un conjunto de permisos con nombre. El administrador utiliza la herramienta de configuración .NET para especificar un tipo particular de evidencia (por ejemplo, Sitio) y un valor particular para esa evidencia (por ejemplo, www.mysite.com) y luego identifica el conjunto de permisos que será el grupo de códigos. otorgada.

Demandas

El código que realiza alguna acción privilegiada solicitará uno o más permisos. La demanda hace que el CLR recorra la pila de llamadas y, para cada método, el CLR se asegurará de que los permisos solicitados estén en los permisos otorgados por el ensamblado del método. Si no se concede el permiso, se genera una excepción de seguridad. Esto evita que el código descargado realice acciones privilegiadas. Por ejemplo, si un ensamblado se descarga de un sitio que no es de confianza, el ensamblado no tendrá ningún permiso de E/S de archivos y, por lo tanto, si este ensamblado intenta acceder a un archivo, generará una excepción que impedirá la llamada.

Referencias

  1. ^ Compatibilidad y migración de la política de seguridad de acceso al código
  2. ^ Resumen de cambios en la seguridad de acceso al código