Publicado: 26 de junio de 2006
Consulte la Página de entrada como punto de partida y para obtener una descripción completa del documento Crear aplicaciones ASP.NET seguras.
Resumen: Esta guía presenta un enfoque práctico, basado en escenarios, del diseño y creación de aplicaciones ASP.NET seguras para Windows 2000 y la versión 0.1 de .NET Framework. Se centra en los elementos clave de la autenticación, la autorización y la comunicación segura en y entre los niveles de aplicaciones Web .NET seguras.
En esta página
Aplicación práctica
Contenido de esta guía
Usuarios a los que va destinada esta guía
Lo que debe saber
Comentarios y soporte técnico
Colaboradores
Aplicación práctica
La información de esta guía se aplica a:
Las recomendaciones y ejemplos de código contenidos en esta guía se crearon y probaron con Visual Studio .NET versión 1.0 y se validaron en servidores con Windows 2000 Advanced Server SP 3, .NET Framework SP 2 y SQL Server 2000 SP 2.
Contenido de esta guía
Esta guía se centra en:
-
La autenticación (para identificar a los clientes de la aplicación)
-
La autorización (para proporcionar controles de acceso de dichos clientes)
-
La comunicación segura (para garantizar que se mantiene la privacidad de los mensajes y que no sufren modificaciones por parte de usuarios no autorizados)
¿Por qué la autenticación, la autorización y la comunicación segura?
La seguridad es un tema amplio. Se ha demostrado que un diseño temprano de autenticación y autorización elimina un alto porcentaje de puntos vulnerables de la aplicación. La comunicación segura forma parte de la seguridad de la aplicación distribuida para proteger datos confidenciales como, por ejemplo, las credenciales que se intercambian con la aplicación y que se transmiten entre los niveles de la aplicación.
Se utilizan numerosas tecnologías para crear aplicaciones Web .NET seguras. Para crear estrategias de autorización y autenticación efectivas en el nivel de la aplicación es necesario saber cómo ajustar las diversas características de seguridad en cada producto y área tecnológica, y cómo lograr que funcionen conjuntamente para proporcionar una estrategia de seguridad de defensa en profundidad. Esta guía le ayudará a lograr exactamente eso.
En la ilustración 1 se resumen las diversas tecnologías que se tratan en la guía.
Ilustración 1
Seguridad de aplicaciones Web .NET
Esta guía se divide en cuatro partes. Se pretende proporcionar una partición lógica que le ayudará a comprender mejor el contenido.
Parte I: Modelos de seguridad
La primera parte de la guía proporciona la base del resto de la misma. Si se familiariza con los conceptos, principios y tecnologías que se introducen en la Parte I, podrá aprovechar al máximo el resto de la guía. Esta parte contiene los siguientes capítulos.
-
Capítulo 1: Introducción
En este capítulo se destacan los objetivos de la guía, se introduce terminología clave y se presenta un conjunto de principios básicos que se aplican a la orientación presentada en capítulos posteriores.
-
Capítulo 2: Modelo de seguridad para aplicaciones Web .NET
En este capítulo se describen las características comunes de las aplicaciones Web .NET desde el punto de vista de la seguridad y se introduce el modelo de seguridad de aplicaciones Web .NET. También se introduce el conjunto de tecnologías de implementación principales que se utilizará para generar aplicaciones Web .NET seguras.
-
Capítulo 3: Autenticación y autorización
Diseñar una estrategia de autenticación y autorización en los múltiples niveles de la aplicación es una tarea de máxima importancia. Este capítulo proporciona orientación para poder desarrollar una estrategia adecuada para un escenario de aplicación concreto. Le permitirá elegir las técnicas de autenticación y autorización más adecuadas y aplicarlas donde corresponda en la aplicación.
-
Capítulo 4: Comunicación segura
En este capítulo se introducen las dos tecnologías principales que se pueden utilizar para proporcionar confidencialidad e integridad de los mensajes a los datos que fluyen en la red entre clientes y servidores en Internet y en intranets empresariales. Son SSL e IPSec. También se trata el cifrado RPC que se puede utilizar para asegurar la comunicación con los componentes remotos revisados.
Parte II: Escenarios de aplicación
La mayoría de las aplicaciones pueden clasificarse como aplicaciones para Internet, extranet o intranet. Esta parte de la guía presenta un conjunto de escenarios de aplicación comunes, cada uno de los cuales representa una de estas categorías. Se describen las principales características de cada escenario y se analizan las posibles amenazas de seguridad.
Por último, se muestra el modo de configurar e implementar la estrategia de autenticación, autorización y comunicación segura más adecuada en cada escenario de aplicación.
Parte III: Seguridad de los niveles
Esta parte de la guía contiene información detallada relacionada con cada uno de los niveles y tecnologías que se asocian a las aplicaciones Web .NET seguras. Esta parte contiene los siguientes capítulos.
-
Capítulo 8: Seguridad de ASP.NET
En este capítulo se proporcionan recomendaciones sobre la seguridad en profundidad de las aplicaciones Web ASP.NET. Se describe cómo implementar la autenticación de Windows y la autenticación mediante Formularios y cómo llevar a cabo la autorización con los diversos equipos selectores que admite ASP.NET. Entre muchos otros temas, también se explica cómo almacenar secretos, cómo utilizar la identidad del proceso correcta y cómo tener acceso a recursos de red como bases de datos remotas mediante la autenticación de Windows.
-
Capítulo 9: Seguridad de la aplicación de Servicios Empresariales
En este capítulo se explica cómo asegurar la funcionalidad empresarial en los componentes revisados contenidos en las aplicaciones de Servicios Empresariales. Se muestra cómo y cuándo utilizar las funciones de Servicios Empresariales (COM+) para la autorización y cómo configurar la autenticación y la suplantación RPC. También se muestra cómo llamar de forma segura a los componentes revisados desde una aplicación Web ASP.NET y cómo identificar y transmitir el contexto de seguridad del llamador original a través del componente revisado de nivel medio.
-
Capítulo 10: Seguridad de servicios Web
Este capítulo se centra en la seguridad de los servicios Web en el nivel de la plataforma, mediante las características subyacentes de IIS y ASP.NET. Para la seguridad de los mensajes, Microsoft está desarrollando el kit de desarrollo de servicios Web, que permite generar soluciones de seguridad conforme a la especificación WS-Security, que forma parte de la iniciativa Global XML Architecture (GXA).
-
Capítulo 11: Seguridad de .Net Remoting
.NET Framework proporciona una infraestructura remota que permite a los clientes comunicarse con objetos alojados en dominios y procesos de una aplicación remota o de un equipo remoto. En este capítulo se muestra cómo implementar soluciones seguras de .NET Remoting.
-
Capítulo 12: Seguridad del acceso a datos
Este capítulo incluye recomendaciones y orientación que le ayudarán a desarrollar una estrategia de acceso seguro a datos. Los temas que se tratan son la autenticación de Windows desde ASP.NET a la base de datos, la creación de cadenas de conexión seguras, el almacenamiento de credenciales en una base de datos de forma segura, la protección frente a ataques de inyección SQL y el uso de funciones de base de datos.
Parte IV: Referencia
Esta parte de referencia de la guía contiene información complementaria para entender mejor las técnicas, estrategias y soluciones de seguridad presentadas en los capítulos anteriores.
-
Capítulo 13: Solucionar problemas de seguridad
Este capítulo presenta un conjunto de sugerencias para la solución de problemas, técnicas y herramientas que facilitan el diagnóstico de los problemas relacionados con la seguridad.
-
Artículos prácticos
Esta sección contiene una serie de artículos sobre procedimientos paso a paso que le guiarán a través de muchas de las técnicas de solución que se tratan en capítulos anteriores.
-
Configuración básica
Esta sección contiene una lista del hardware y el software utilizado durante el desarrollo y prueba de la guía.
-
Almacenes y herramientas de configuración
En esta sección se resumen los almacenes de configuración que utilizan los diversos servicios de autenticación, autorización y comunicación segura, y se ofrece una lista de las herramientas de mantenimiento asociadas.
-
Centro de referencia
Esta sección proporciona un conjunto de vínculos a artículos y sitios Web útiles que ofrecen información general adicional acerca de los principales temas que se tratan en toda la guía.
-
Funcionamiento
Esta sección proporciona información complementaria que detalla el funcionamiento de tecnologías concretas.
-
Matriz de identidad de ASP.NET
En esta sección se resumen (con ejemplos) las variables disponibles para las aplicaciones Web ASP.NET, los servicios Web y los componentes remotos alojados en ASP.NET que proporcionan la información de identidad en los niveles de llamador, subproceso y proceso.
-
Criptografía y certificados
Esta sección incluye información general complementaria acerca de la criptografía y los certificados.
-
Modelo de seguridad de ASP.NET
En esta sección se ofrece un diagrama que muestra los servicios de autenticación, autorización y comunicación segura disponibles entre los niveles de una aplicación ASP.NET.
-
Glosario
Un glosario de la terminología de seguridad que se utiliza en toda la guía.
Usuarios a los que va destinada esta guía
Debería leer esta guía si es un arquitecto o desarrollador de software intermedio que planea crear o que actualmente está creando aplicaciones Web .NET con una o varias de las siguientes tecnologías.
-
ASP.NET
-
Servicios Web
-
Servicios Empresariales
-
Remoting
-
ADO.NET
Lo que debe saber
Para obtener el máximo provecho de esta guía al diseñar y generar aplicaciones Web .NET seguras, debería conocer de antemano las técnicas y tecnologías de desarrollo .NET y tener experiencia con ellas. Debería estar familiarizado con la arquitectura de aplicaciones distribuidas y, si ya ha implementado soluciones de aplicaciones Web .NET, debería conocer su propio modelo de desarrollo y arquitectura de la aplicación.
Comentarios y soporte técnico
¿Tiene alguna pregunta, comentario o sugerencia? Envíe sus comentarios acerca de esta guía de seguridad mediante correo electrónico a secguide@microsoft.com.
Esta guía de seguridad se ha diseñado para ayudarle a generar aplicaciones distribuidas .NET seguras. El código de ejemplo y la orientación se proporcionan tal cual. Si bien el material ha sido probado y se considera un conjunto sólido de procedimientos y recomendaciones, no recibe el soporte técnico de un producto de Microsoft tradicional.
Colaboradores
Se agradece enormemente la aportación de los siguientes colaboradores y revisores:
Manish Prabhu, Jesus Ruiz-Scougall, Jonathan Hawkins y Doug Purdy, Keith Ballinger, Yann Christensen y Alexei Vopilov, Laura Barsan, Greg Fee, Greg Singleton, Sebastian Lange, Tarik Soulami, Erik Olson, Caesar Samsi, Riyaz Pishori, Shannon Pahl, Ron Jacobs, Dave McPherson, Christopher Brown, John Banes, Joel Scambray, Girish Chander, William Zentmayer, Shantanu Sarkar, Carl Nolan, Samuel Melendez, Jacquelyn Schmidt, Steve Busby, Len Cardinal, Monica DeZulueta, Paula Paul, Ed Draper, Sean Finnegan, David Alberto, Kenny Jones, Doug Orange, Alexey Yeltsov, Martin Kohlleppel, Joel Yoker, Nanduri, Ilia Fortunov, Aaron Margosis (MCS), Venkat Chilakala, John Allen, Jeremy Bostron, Martin Petersen-Frey, Karl Westerholm, Jayaprakasam Siddian Thirunavukkarasu, Wade Mascia, Ryan Kivett, Sarath Mallavarapu, Jerry Bryant, Peter Kyte, Philip Teale, Ram Sunkara, Shaun Hayes, Eric Schmidt, Michael Howard, Rich Benack, Carlos Lyons, Ted Kehl, Peter Dampier, Mike Sherrill, Devendra Tiwari, Tavi Siochi, Per Vonge Nielsen, Andrew Mason, Edward Jezierski, Sandy Khaund, Edward Lafferty, Peter M. Clift, John Munyon, Chris Sfanos, Mohammad Al-Sabt, Anandha Murukan (Satyam), Keith Brown (DevelopMentor), Andy Eunson, John Langley (KANA Software), Kurt Dillard, Christof Sprenger, J.K.Meadows, David Alberto, Bernard Chen (Sapient).