Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Seguridad en Aplicaciones Web
Seguridad en Aplicaciones Web
Microsoft ASP.NET
Índice
Descripción 1
Lección: descripción de la seguridad para aplicaciones Web 2
Lección: trabajar con autenticación basada en Windows 14
Lección: trabajar con autenticación basada en formularios 25
Lección: descripción de la autenticación mediante Microsoft
Passport 36
Seguridad en aplicaciones Web con Microsoft ASP.NET 1
Descripción
*****************************
Introducción La seguridad de las aplicaciones Web es un tema crítico y complejo para los
desarrolladores Web. Un sistema seguro requiere una cuidadosa planificación, y
los administradores y desarrolladores de sitios Web deben tener un
conocimiento muy claro de las opciones de que disponen cuando securizan sus
aplicaciones Web.
Microsoft® ASP.NET está sincronizado con el .NET Framework e Internet
Information Server (IIS) para proporcionar seguridad a las aplicaciones Web.
Este módulo trata en detalle los distintos métodos de seguridad para las
aplicaciones Web.
Objetivos En este módulo, aprenderemos a:
Describir los métodos de autenticación de ASP.NET e IIS.
Utilizar la autenticación basada en Windows para asegurar aplicaciones
Web ASP.NET.
Utilizar la autenticación basada en formularios para asegurar aplicaciones
Web ASP.NET.
Utilizar Microsoft Passport para asegurar aplicaciones Web ASP.NET.
2 Seguridad en aplicaciones Web con Microsoft ASP.NET
*****************************
Introducción Por definición, las aplicaciones Web ofrecen a los usuarios acceso a un recurso
centralizado, el servidor Web, y, a través de él, acceso a servidores de bases de
datos. Conociendo e implementando medidas de seguridad adecuadas para
nuestra aplicación Web, podemos proteger nuestros propios recursos, además
de proporcionar un entorno seguro en el que los usuarios trabajen
cómodamente.
En esta lección, se describen distintos conceptos de seguridad: autenticación,
autorización y mecanismos de autenticación de IIS. También estudiaremos el
protocolo Secure Sockets Layer (SSL).
Objetivos de la lección En esta lección, aprenderemos a:
Describir los dos conceptos fundamentales de seguridad para asegurar una
aplicación Web.
Describir los tres métodos de autenticación de ASP.NET.
Distinguir entre los tres métodos de autenticación de ASP.NET.
Describir los cuatro mecanismos de autenticación de IIS.
Describir SSL.
Seguridad en aplicaciones Web con Microsoft ASP.NET 3
Autenticación
z Acepta credenciales de un usuario
z Valida las credenciales
Autorización
z En función de las credenciales de autenticación
suministradas, determina el derecho de acceso a un
recurso
z Puede asignarse por nombre de usuario o por rol
*****************************
Introducción Para poder empezar a trabajar con temas relacionados con la seguridad,
debemos estar familiarizados con los dos conceptos fundamentales de seguridad
para las aplicaciones Web:
Autenticación
Autorización
*****************************
*****************************
Introducción Cada uno de los tres métodos de autenticación que soporta ASP.NET (basado
en Windows, basado en formularios y Microsoft Passport) es adecuado para
situaciones específicas. Cada método tiene diversas ventajas e inconvenientes.
Autenticación basada en La autenticación basada en Windows utiliza la infraestructura de Windows
Windows existente y, por tanto, es más adecuado en situaciones en las que se dispone de
un número fijo de usuarios con cuentas de usuario Windows existentes. Dos
ejemplos de situaciones de este tipo son:
El desarrollo de una intranet para una organización. Es muy probable que la
organización disponga de cuentas de usuario Windows configuradas para
cada empleado.
El control del acceso a información confidencial. Por ejemplo, los usuarios
del grupo de Recursos Humanos de una empresa pueden acceder a
directorios que contienen currículos de empleados e información de salarios.
Podemos utilizar la autenticación basada en Windows para evitar que los
empleados de otros grupos, como el grupo de Desarrolladores, accedan a
estos documentos confidenciales.
Acceso anónimo Para aplicaciones Web en las que usuarios desconocidos realizan solicitudes,
normalmente aplicaciones Web públicas, IIS soporta un usuario anónimo, un
usuario que no dispone de credenciales de autenticación. Cuando IIS recibe una
solicitud de un usuario anónimo, IIS hace la solicitud a Windows utilizando la
cuenta predeterminada IUSR_nombreequipo.
Seguridad integrada de Si el usuario que realiza la solicitud ya ha sido autenticado en una red basada en
Windows Windows, IIS puede pasar las credenciales del usuario cuando solicite acceso a
un recurso. Las credenciales no incluyen el nombre de usuario y la contraseña,
únicamente un token encriptado que indica el estado de seguridad del usuario.
La seguridad integrada de Windows funciona con Microsoft Windows NTLM
(Windows NT® Local Area Network (LAN) Manager) o con Kerberos. La
seguridad integrada de Windows también utiliza un algoritmo hash para
codificar y decodificar las credenciales del usuario.
Sin embargo, la seguridad integrada de Windows no resulta práctica en las
aplicaciones Web que deben atravesar cortafuegos. Por tanto, es más adecuada
en escenarios de intranets corporativas.
*****************************
Ë Ejecutar la demostración
1. En el menú Inicio, hacer clic con el botón derecho en Mi PC y hacer clic en
Administrar.
2. En la consola Administración de equipos, expandir Servicios y
aplicaciones, expandir Internet Information Services, expandir Sitios
Web, y expandir Sitio Web predeterminado.
3. Hacer clic con el botón derecho en la aplicación Web Pract14VB o
Pract14CS y hacer clic en Propiedades.
4. En el cuadro de diálogo Pract14VB o Propiedades de Pract14CS, en la
ficha Seguridad de directorios, en la sección Control de autenticación y
acceso anónimo, hacer clic en Modificar.
5. Mostrar los métodos de autenticación disponibles.
Seguridad en aplicaciones Web con Microsoft ASP.NET 11
*****************************
Nota RSA son las siglas de Rivest, Shamir y Adleman, los nombres de los
científicos que crearon este algoritmo.
¿Qué es SSL? SSL es un protocolo que se utiliza para transmitir datos de modo seguro a través
de una red. SSL securiza la comunicación de datos mediante:
Encriptación de datos
Autenticación de servidor
Integridad de datos
*****************************
*****************************
Configurar IIS El primer paso para securizar aplicaciones Web utilizando la autenticación
basada en Windows implica configurar IIS utilizando uno o varios de los tres
mecanismos de autenticación:
Autenticación básica
Autenticación implícita
Seguridad integrada de Windows
<location
<location path="ShoppingCart.aspx">
path="ShoppingCart.aspx">
<system.web>
<system.web>
<Authorization>
<Authorization>
<deny
<deny users="?"/>
users="?"/>
</Authorization>
</Authorization>
</system.web>
</system.web>
</location>
</location>
*****************************
Hemos estudiado los dos primeros pasos en el apartado anterior. Esta sección
explica los dos últimos pasos.
Configurar la Para indicar que sólo algunas páginas específicas son seguras, debemos crear
autorización una sección <location> con subsecciones <system.web> y <authorization> para
cada página segura de nuestra aplicación Web:
<location path="ShoppingCart.aspx">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
lblAuthUser.Text
lblAuthUser.Text == User.Identity.Name
User.Identity.Name
lblAuthType.Text = User.Identity.AuthenticationType
lblAuthType.Text = User.Identity.AuthenticationType
lblIsAuth.Text
lblIsAuth.Text == User.Identity.IsAuthenticated
User.Identity.IsAuthenticated
lblAuthUser.Text
lblAuthUser.Text == User.Identity.Name;
User.Identity.Name;
lblAuthType.Text = User.Identity.AuthenticationType;
lblAuthType.Text = User.Identity.AuthenticationType;
lblIsAuth.Text
lblIsAuth.Text == User.Identity.IsAuthenticated;
User.Identity.IsAuthenticated;
*****************************
C# lblAuthUser.Text = User.Identity.Name;
lblAuthType.Text = User.Identity.AuthenticationType;
lblIsAuth.Text = User.Identity.IsAuthenticated;
*****************************
Ë Ejecutar la demostración
Configurar IIS con 1. Hacer clic con el botón derecho en Mi PC y hacer clic en Administrar.
autenticación básica
2. Expandir Servicios y aplicaciones, expandir Internet Information
Services, y hacer clic en Sitios Web.
3. Hacer clic con el botón derecho en Sitio Web predeterminado y hacer clic
en Propiedades.
4. Hacer clic en la ficha Seguridad de directorios, y clic en Modificar para
abrir el cuadro de diálogo Métodos de autenticación de IIS.
5. Seleccionar la casilla de verificación de autenticación básica (la contraseña
se envía en texto claro) y hacer clic en Sí en el cuadro de diálogo
Administrador de Servicios de Internet.
15. Ir a:
Visual Basic .NET http://localhost/Pract14VB/SecurePageDemo1.aspx
C# http://localhost/Pract14CS/SecurePageDemo1.aspx
Mostrar que aparece el cuadro de diálogo Connect to localhost.
16. Hacer clic en Cancelar y mostrar que se obtiene un error de servidor
porque se deniega el acceso.
17. Ir a:
Visual Basic .NET http://localhost/Pract14VB/SecurePageDemo2.aspx
C# http://localhost/Pract14CS/SecurePageDemo2.aspx
Mostrar que también aparece el cuadro de diálogo Connect to localhost.
18. Escribir las credenciales Nombre de usuario como someone y Contraseña
como Secreto1 y hacer clic en Aceptar.
19. La página SecurePageDemo2.aspx debería mostrar el nombre de usuario
someone y el tipo de autenticación básica.
Ahora, podemos acceder a cualquier página segura, siempre que no
cerremos el navegador. Si cerramos el navegador, deberemos repetir el
proceso de autenticación.
20. Ir a:
Visual Basic .NET http://localhost/Pract14VB/SecurePageDemo1.aspx
C# http://localhost/Pract14CS/SecurePageDemo1.aspx
Mostrar que esta vez no se solicitan las credenciales.
Los estudiantes acceder 21. Indicar a los estudiantes que vayan a:
al equipo del instructor
*****************************
11 22 Autenticación
IIS ASP.NET Forms
Nombre usuario
8 Autenticado
66 Alguien 44 Autorizado
Acceso denegado
8
Contraseña Página de inicio
*********** (los usuarios
introducen sus
No Enviar
Enviar credenciales)
autenticado 33
Autenticado
Cookie de Autorizado
autenticación 77 Página segura
55 solicitada
*****************************
Introducción Cuando un usuario solicita una página Web que está protegida por
autenticación basada en formularios, la solicitud debe pasar primero por IIS.
Por ello, debemos establecer la autenticación de IIS a acceso anónimo.
Establecer IIS a anónimo requiere que todas las solicitudes pasen por ASP.NET
antes de ser autenticadas.
Serie de eventos que En la autenticación basada en formularios, se produce la siguiente serie de
tienen lugar durante la eventos:
autenticación basada en
formularios 1. Un cliente genera una solicitud de una página .aspx protegida.
2. IIS recibe la solicitud y la pasa a ASP.NET. El modo de autenticación está
establecido en acceso anónimo y, por ello, la solicitud pasa directamente por
IIS.
3. ASP.NET comprueba si la solicitud dispone de una cookie de autenticación
válida anexa. Si es así, significa que las credenciales del usuario ya han sido
confirmadas y que la solicitud se ha examinado para su autorización.
ASP.NET realiza la verificación de autorización comparando las
credenciales que contiene la cookie de autorización de la solicitud con las
opciones de configuración de autorización del archivo Web.config. Si el
usuario es autorizado, se concede el acceso a la página segura solicitada.
4. Si la solicitud no tiene ninguna cookie anexa, ASP.NET redirecciona la
solicitud a una página de inicio de sesión (cuya ruta reside en el archivo de
configuración de la aplicación), donde el usuario introduce las credenciales
requeridas, normalmente un nombre y una contraseña.
Seguridad en aplicaciones Web con Microsoft ASP.NET 27
11
Configurar IIS para utilizar autenticación anónima
22 Establecer la autenticación basada en formularios en
Web.config
<Authentication
<Authentication mode="Forms"
mode="Forms" >>
<<forms name=".namesuffix"
forms name=".namesuffix"
loginUrl="login.aspx"
loginUrl="login.aspx" />
/>
</Authentication>
</Authentication>
33 Establecer la autorización
44
Generar un formulario Web
Form de inicio de sesión
*****************************
Sub
Sub cmdLogin_Click(s
cmdLogin_Click(s As
As Object,
Object, ee As
As eventArgs)
eventArgs)
If (login(txtEmail.Text, txtPassword.Text))
If (login(txtEmail.Text, txtPassword.Text))
FormsAuthentication.RedirectFromLoginPage(txtEmail.Text,
FormsAuthentication.RedirectFromLoginPage(txtEmail.Text, False)
False)
End
End If
If
End
End Sub
Sub
Leer las credenciales del usuario desde una cookie
z User.Identity.Name devuelve el valor guardado por
FormsAuthentication.RedirectFromLoginPage
*****************************
La siguiente tabla muestra una lista todos los métodos del objeto
FormsAuthentication, que pueden utilizarse en el proceso de autenticación.
Método Función
Crear una página de Para poder utilizar la clase FormsAuthentication, deberíamos referenciar la
inicio de sesión biblioteca System.Web.Security utilizando Imports o using.
Una página de inicio de sesión es simplemente una página ASP.NET con un
formulario HTML, un botón Submit y un procedimiento de evento Click para
el botón Submit.
El siguiente es un ejemplo de un formulario en una página de inicio de sesión:
<form id="Login" method="post" runat="server">
<P>Email: <asp:TextBox id="txtEmail" runat="server">
</asp:TextBox></P>
<P>Password<asp:TextBox id="txtPassword" TextMode="password"
runat="server">
</asp:TextBox></P>
<P><asp:Button id="cmdLogin" Text="Sign In Now"
OnClick="cmdLogin_Click"
runat="server">
</asp:Button></P>
<P><asp:Label id="lblInfo" runat="server">
</asp:Label></P>
</form>
End Sub
if (strCustomerId != "")
{
FormsAuthentication.RedirectFromLoginPage
(strCustomerId, false);
}
else
{
lblInfo.Text = "Invalid Credenciales: Please try again";
}
}
Leer credenciales desde Después de que un usuario haya sido autenticado, podemos obtener su nombre
cookies de usuario programáticamente utilizando la propiedad User.Identity.Name.
Esta propiedad resulta útil para generar una aplicación que utilice el nombre del
usuario como una clave para guardar información en una tabla de una base de
datos o un recurso del directorio.
También podemos identificar dinámicamente el mecanismo de autenticación
(Forms en este caso) utilizando User.Identity.AuthenticationType y ver si el
usuario está autenticado utilizando User.Identity.IsAuthenticated.
Con la autenticación basada en formularios, User.Identity es un objeto de la
clase FormsIdentity.
*****************************
Ë Ejecutar la demostración
Configurar IIS para 1. Hacer clic con el botón derecho en Mi PC y clic en Administrar.
acceso anónimo
2. Ir a Servicios y aplicaciones, expandir Internet Information Services, y
hacer clic en Sitios Web.
3. Hacer clic con el botón derecho en Sitio Web predeterminado y hacer clic
en Propiedades.
4. Hacer clic en la ficha Seguridad de directorios y clic en Modificar para
abrir el cuadro de diálogo Métodos de autenticación de IIS.
5. Desactivar la casilla de verificación de Autenticación básica (la contraseña
se envía en texto claro).
*****************************
Introducción La ventaja de Microsoft Passport es que los usuarios pueden presentar las
mismas credenciales en cualquier sitio Web participante, y únicamente deben
iniciar sesión una vez. Cuando los usuarios cierran su navegador o indican que
desean finalizar la sesión, la cookie se destruye y el usuario debe iniciar sesión
de nuevo para acceder a los recursos de alguno de los sitios participantes.
En esta lección, estudiaremos el conjunto de eventos que tiene lugar durante la
autenticación mediante Microsoft Passport. También estudiaremos cómo
implementar la autenticación con Microsoft Passport.
Objetivos de la lección En esta lección, aprenderemos a:
Describir el conjunto de eventos que tiene lugar durante la autenticación con
Microsoft Passport.
Identificar otros recursos de Microsoft Passport.
Seguridad en aplicaciones Web con Microsoft ASP.NET 37
*****************************
Sitios Web
z http://www.passport.com
z http://msdn.microsoft.com
*****************************