Compartir a través de


Información general sobre codificación segura

Actualización: noviembre 2007

En esta sección se ofrece información general que muestra diversas formas de diseñar código para que funcione con el sistema de seguridad.

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 la aplicación que no sea 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 malicioso puede llamar a su código. Aunque la seguridad de acceso a código puede evitar el acceso de código malicioso 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 utilizan estos contenedores, es mucho mejor concederlos únicamente al código de contenedor. Si la funcionalidad subyacente no expone recursos y la implementación es asimismo "segura", sólo 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.

Vea también

Otros recursos

Instrucciones de codificación segura