Instrucciones de codificación segura
La seguridad basada en la evidencia y la seguridad de acceso del código ofrecen mecanismos explícitos y muy eficaces para implementar el sistema de seguridad. Con la mayor parte del código de la aplicación se puede usar simplemente la infraestructura implementada por .NET Framework. En algunos casos, es necesario utilizar una seguridad específica de la aplicación, que se compila mediante la extensión del sistema de seguridad o con nuevos métodos ad hoc.
Con los permisos que exige .NET Framework y otros requisitos en el código, se deben construir las barreras que impidan que un código malintencionado obtenga información confidencial o realice otras acciones no deseadas. Además, mediante el código de confianza se debe conseguir un equilibro entre la seguridad y la capacidad de uso en todos los escenarios esperados.
En esta información general, se describen las diversas formas de diseñar código para que funcione con el sistema de seguridad.
Nota |
---|
En .NET Framework versión 4, se han realizado cambios importantes en el modelo de seguridad y la terminología de .NET Framework. Para obtener más información sobre estos cambios, vea Cambios de seguridad en .NET Framework 4. |
Código neutral respecto a la seguridad
El código neutral con respecto a la seguridad no realiza ninguna acción concreta con el sistema de seguridad. Se ejecuta con cualquier permiso que reciba. Aunque las aplicaciones que no consiguen detectar las excepciones de seguridad asociadas con operaciones protegidas (como la utilización de archivos, trabajo en red, etc.) pueden producir una excepción no controlada, el código neutral respecto a la seguridad puede aprovechar las ventajas de las tecnologías de seguridad de .NET Framework.
Una biblioteca neutral respecto a la seguridad posee unas características especiales que es importante comprender. Suponga que la biblioteca proporciona los elementos de la API que utilizan archivos o que llaman a código no administrado; si su código no tiene el correspondiente permiso, entonces no se ejecutará de la forma descrita. Sin embargo, aunque el código tenga el permiso, todo código de la aplicación que llame a ese código deberá tener el mismo permiso para funcionar correctamente. Si el código que realiza la llamada no tiene el permiso necesario, aparece una excepción SecurityException como resultado del recorrido de pila de seguridad de acceso del código.
Código de aplicación que no es un componente reutilizable
Si el código forma parte de una aplicación a la que no llamará otro código, la seguridad es una cuestión sencilla y puede que no sea necesario programar un código especial. No obstante, tenga en cuenta que un código malintencionado puede llamar a su código. Aunque la seguridad de acceso a código puede evitar el acceso de código malintencionado a los recursos, este tipo de código podría leer los valores de campos o propiedades que contengan información confidencial.
Además, si el código admite los datos proporcionados por el usuario desde Internet o de otras fuentes que no sean de confianza, es necesario tener mucho cuidado con las entradas malintencionadas.
Implementación de contenedor administrado en código nativo
Normalmente, en este escenario se implementa alguna funcionalidad muy útil en código nativo con el fin de que esté disponible para código administrado. Con la invocación de plataforma o la interoperabilidad COM es fácil escribir contenedores administrados. No obstante, si los escribe de esta forma, los llamadores de los contenedores deben tener derechos de código no administrado para funcionar correctamente. Con una directiva predeterminada, esto significa que el código descargado de una intranet o de Internet no funcionará con los contenedores.
En vez de conceder derechos de código no administrado a todas las aplicaciones que usen estos contenedores, es mejor concederlos únicamente al código de contenedor. Si la funcionalidad subyacente no expone recursos y la implementación es asimismo segura, solo es necesario declarar los derechos del contenedor, lo que permite a cualquier código llamar a través del contenedor. Cuando se exponen recursos, la codificación de seguridad debe ser la misma que la del código de biblioteca descrito en la siguiente sección. Como el contenedor puede exponer llamadores a esos recursos, es necesario realizar una cuidadosa comprobación de la seguridad de código nativo, que es responsabilidad del contenedor.
Código de biblioteca que expone recursos protegidos
Esta forma de enfocar la codificación de seguridad es la más eficaz y, probablemente, la más peligrosa si se realiza incorrectamente. La biblioteca se utiliza como una interfaz para que otro código tenga acceso a determinados recursos que, de otro modo, no estarían disponibles, al igual que la clases de .NET Framework exigen permisos en los recursos que utilizan. En cualquier parte que exponga un recurso, el código debe exigir, en primer lugar, el permiso apropiado al recurso (es decir, tiene que realizar una comprobación de seguridad) y, a continuación, declarar sus derechos para ejecutar la operación en curso.
Temas relacionados
Título |
Descripción |
---|---|
Explica cómo se ejecuta una aplicación que no es de plena confianza en un entorno de seguridad restringido, en el que se limitan los permisos de acceso a código que se le conceden. |
|
Describe cómo interactuar con el sistema de seguridad de .NET Framework mediante las solicitudes de permiso. |
|
Describe cómo proteger los miembros privados. |
|
Describe cómo ayudar a proteger los métodos contra las llamadas de código de confianza parcial. |
|
Describe aspectos de la seguridad relacionados con códigos que contienen otros código. |
|
Describe aspectos de la seguridad relacionados con código que usa las matrices públicas de solo lectura existentes en las bibliotecas de .NET Framework. |
|
Describe aspectos de la seguridad relacionados con el control de excepciones. |
|
Describe aspectos de la seguridad relacionados con las aplicaciones que admiten los datos proporcionados por el usuario. |
|
Describe aspectos de la seguridad relacionados con las aplicaciones que se comunican a través de los dominios de aplicación. |
|
Describe aspectos de seguridad relacionados con la serialización de objetos. |
|
Describe cómo evitar condiciones de carrera en el código. |
|
Describe aspectos de la seguridad relacionados con las aplicaciones que generan código dinámico. |
|
Describe los permisos que pueden permitir burlar la seguridad. |
|
Describe los factores que hay que tener en cuenta a la hora de probar e instalar la aplicación. |
|
Describe detalladamente la seguridad ASP.NET y proporciona instrucciones para su utilización en el código. |
|
Describe detalladamente la seguridad de acceso a código de .NET Framework y proporciona instrucciones para su utilización en el código. |
|
Describe detalladamente la seguridad basada en funciones de .NET Framework y proporciona instrucciones para su utilización en el código. |