Este artículo proviene de un motor de traducción automática.

Pinceladas sobre seguridad

Mejorar la seguridad de ASP.NET con el análisis de código de Visual Studio 2010

Sacha Fausto

Todos los usuarios realizar probablemente de desarrollo de ASP.NET admite, abiertamente o no, para presentar o encontrar a un problema de seguridad en algún momento durante su carrera profesional. Los desarrolladores a menudo están presionados para ofrecer código tan pronto como sea posible, y la complejidad de la plataforma y un gran número de opciones de configuración deja a menudo, la aplicación en un estado de seguridad menos deseable. Además, los requisitos de configuración de depuración y de producción son distintos, con frecuencia, que puede introducir la configuración de depuración en producción, causando una gran variedad de problemas.

En los años, la plataforma ASP.NET ha madurado y se ha realizado una mejor documentación disponible a través de MSDN y blogs de la Comunidad, pero saber qué característica o valor de configuración se utiliza a menudo es problemática. Incluso con buenos conocimientos de las funciones de seguridad, pueden producirse los errores que se puede dar lugar a vulnerabilidades de seguridad de la aplicación.

Revisión de código del mismo nivel es un buen método para detectar problemas en tiempo de compilación y de un proceso útil. Aún así, no todo el mundo tiene tiempo o presupuesto, o expertos colegas en cuestión, dicha revisión.

Desde la introducción de análisis de código en Visual Studio 2005, los desarrolladores han sido capaces de analizar automáticamente el código para ver si se cumple una serie de prácticas recomendadas que abarcan desde el diseño, mantenimiento, rendimiento y seguridad. Hasta ahora, el análisis de código ha sido una herramienta muy útil, pero no ha centrado en proporcionar seguridad instrucciones de prácticas recomendadas para ASP.NET—until ahora.

En este artículo presentaré para las nuevas reglas de análisis de código ASP.NET que se pueden utilizar con el análisis de código de Visual Studio, así como con la aplicación FxCop independiente para mejorar la seguridad de las aplicaciones ASP.NET.

Información general

Puede descargar el paquete de reglas de análisis de código de seguridad de ASP.NET para 2010 de Visual Studio y FxCop versión 10.0 de go.microsoft.com/?linkid=9750555 de . La instalación contiene tres nuevos paquetes de reglas:

  • ASP.NET.Security: Esta categoría centra en la seguridad de las prácticas recomendadas relacionadas con la manera en que se inicializan las propiedades de System.Web.Ui.Page.
  • ASP.NET.MVC.Security: Esta categoría centra en la seguridad de las prácticas recomendadas relacionados con el uso de ASP.NET MVC.
  • ASP.NET.Security.Configuration: Esta categoría centra en la seguridad de las prácticas recomendadas relacionados con los elementos de configuración en los archivos web.config.

Una vez instalado el paquete de reglas, puede empezar a revisar la seguridad de la aplicación Web automáticamente, haga clic en el análisis de código de ejecución en el botón en el sitio Web en el menú Generar (consulte de figura 1). El análisis debe revisar cada archivo web.config y de clase de página de la aplicación con una serie de recomendaciones de seguridad de ASP.NET.

image: Running Code Analysis on a Sample Web Site

Figura 1 del análisis de código en ejecución en un sitio Web de ejemplo

Por ejemplo, una vulnerabilidad de seguridad más generalizados en las aplicaciones Web es la falsificación de solicitud entre sitios, lo que permite al atacante ejecutar comandos como otro usuario. La mitigación común para esta vulnerabilidad es utilizar la propiedad Page.ViewStateUserKey (bit.ly/cTSHM0 ). También puede emplear el AntiForgeryToken en ASP.NET MVC (bit.ly/ciiQIP ). Ambas técnicas evitar un ataque de reproducción malintencionado en la aplicación. El análisis de código se asegurará de que se utiliza la reducción correspondiente de la aplicación.

Un poco común de comentarios que he escuchado los desarrolladores que se está ejecutando el análisis de código por primera vez es el número abrumador de advertencias que se devuelven (consulte la figura 2). Es fácil sentirse como si estuviera en su propio para averiguar cómo los reparó todos.

image: Violations Are Listed in the Error List Warnings Tab

La figura 2 de infracciones se muestran en la ficha de advertencias de la lista de errores

Para eliminar parte de la carga de corregir cada una de ellas, cada regla incluye una indicación clara de lo que es necesario corregir y cómo corregirlo, junto con algunas referencias si desea obtener más información antes de aplicar el cambio (consulte de figura 3).

image: Detailed Information in the Warnings Section

La figura 3 de la información detallada en la sección de advertencias

Análisis de código también se pueden configurar para ejecutarse después de cada generación, haga clic en el sitio Web | configurar el análisis de código para el sitio Web y, a continuación, comprobar la opción “ Habilitar análisis de código en generar (define la constante CODE_ANALYSIS) ” (consulte de figura 4).

image: Enabling Code Analysis During Build

La figura 4 de Habilitar el análisis de código durante la generación

Análisis de código con FxCop

La función de análisis de código sólo está disponible en Premium de Visual Studio y las versiones Ultimate. Sin embargo, también puede utilizar la herramienta FxCop independiente para realizar análisis de código ASP.NET. FxCop está disponible como parte del SDK de Windows. La versión 7.1 del SDK de Windows está disponible en bit.ly/dzCizq de .

Cuando se utiliza la herramienta de FxCop estándar, se requiere un poco más trabajo para realizar el análisis. Guiaremos a través de los pasos necesarios para hacer que funcione.

Normalmente cuando se compila el proyecto Web, el formato de la página, el código de página no se incluyen en un código-detrás de archivo, no se compila y se mantiene intacta en la raíz de Web de la aplicación. Cuando el usuario primero solicita la página, el marcado se compila en ensamblados independientes. Esto permite que un sitio que se pueda actualizar sin necesidad de que todo lo demás que se vuelva a compilar. (Para obtener más información sobre el proceso de compilación de la página ASP.NET, vea msdn.microsoft.com/library/ms366723 de ).

Debido a que no todo el código automáticamente se compila, parte del código no está visible durante el análisis y problemas de seguridad importantes podrían perderse. Para asegurarse de que todo el código está disponible durante el análisis, debe forzar la compilación previa de todas las páginas. La precompilación se puede conseguir mediante la herramienta de publicación de sitios Web, que se puede iniciar haciendo clic en Generar | sitio Web de Public. La herramienta le permite configurar cómo se publicará el sitio Web, y es donde se puede habilitar la precompilación. Sólo tiene que desactivar la opción “ Permitir este sitio precompilado se actualice ” y haga clic en Aceptar (consulte de figura 5). Esto dará como resultado de un sitio totalmente compilado listo para su análisis.

image: Publishing Web Site with Precompilation

La figura 5 de sitio Web con la compilación previa de la publicación

Ahora que ya tiene un sitio totalmente compilado, dé rienda suelta a FxCop en él.

Análisis ASP.NET requiere funcionalidad que sólo está disponible en la versión de la línea de comandos de FxCop, por lo tanto, abra un símbolo del sistema y desplácese a la instalación de FxCop. Esto es muy probable que tendrá uno de los siguientes valores, dependiendo de si se ejecuta una versión de 32 o 64 bits de Windows:

C:\Program Files (x86)\Microsoft FxCop 10.0
  C:\Program Files\Microsoft FxCop 10.0

Desde la carpeta de FxCop puede ejecutar fxcopcmd.exe para iniciar el análisis de código. Para un sitio Web de ASP.NET simplemente debe utilizar un comando similar al siguiente:

fxcopcmd.exe /file:"H:\MSDN\PrecompiledWeb\
    MSDNSampleSite\bin" /rule:
    AspNetConfigurationSecurityRules.dll 
    /rule:AspNetMvcSecurityRules.dll 
    /rule:ASPNetSecurityRules.dll /aspnet /console

Let’s explique esto para entender las opciones de que uso.

La opción /file indica cuáles son los ensamblados que se va a analizar. En este ejemplo, los ensamblados de Mis sitio precompilado se encuentran bajo H:\MSDN\PrecompiledWeb\MSDNSampleSite\bin.

La opción /rule indica qué reglas utilizar durante el análisis. De este ejemplo, voy a usar sólo tres de las reglas de seguridad ASP.NET: AspNetConfigurationSecurityRules.dll, AspNetMvcSecurityRules.dll y ASPNetSecurityRules.dll.

La opción /aspnet permite el análisis ASP.NET y la opción /console dirige los resultados del análisis en la ventana de comandos. Puede ver los resultados en de figura 6. Obtener más información acerca de la Fxcopcmd y sus distintas opciones se pueden encontrar en msdn.microsoft.com/library/bb429474(VS.80) de .

image: Running ASP.NET Rules Using Fxcopcmd.exe

La figura 6 de la ejecución de reglas ASP.NET mediante fxcopcmd.exe

Conclusión

Mejorar la seguridad de los sitios ASP.NET puede ser una tarea difícil, pero las reglas de análisis de código de seguridad ASP.NET realiza una gran parte del trabajo por el usuario mediante la identificación de algunas amenazas importantes. Como ha visto en este artículo, el proceso es sencillo y se puede configurar para ejecutarse cada vez que se genera, que proporciona la identificación temprana de problemas.

Se recomienda implementar las reglas para cada equipo del desarrollador y agregarlos como parte de un servidor de Team Foundation o de otras directivas de protección de repositorio. Esto permite que los desarrolladores individuales comprobar su código en tiempo de generación y también aplica la directiva para que no hay código se puede comprobar que no cumple las mejores prácticas.

También puede implementar sus propias reglas de análisis de código personalizado. Si está interesado en recorrer hacia abajo de esta ruta, no hay información excelente en una entrada de blog por Duque Kamstra en el Blog del equipo de análisis de código (bit.ly/blpP38 ). También encontrará un tutorial útil del proceso de blog de Tatham Oddie (bit.ly/5tFrMw ).

Sacha Faust es un desarrollador incluidas en el equipo de la plataforma de Microsoft Office 365. Puede seguir Fausto en blogs.msdn.com/b/sfaust.

Gracias al siguiente experto técnico para este artículo: Bryan Sullivan