- Introducción a la seguridad en la plataforma .NET
- Conexión
segura a BD y almacenamiento de secretos
-
Autenticación mediante formularios
-
Criptografía en ASP.NET
-
Seguridad en servicios web XML
1. Introducción a la seguridad en la plataforma .NET
La plataforma .NET proporciona como una de sus características más
destacadas una robusta infraestructura de seguridad que facilita tanto a los
desarrolladores, como administradores y usuarios finales, un mayor control
sobre el código que se ejecuta en sus sistemas. En este primer módulo aprenderá
los fundamentos de la seguridad en el acceso a código (CAS), basada en la
identidad de código, en oposición a la identidad de usuario.
- Restricciones de seguridad: identidad de
código vs. identidad de usuario
- Autenticación: acumulación de evidencias
para identificación del código
- Autorización: clases de permisos en .NET
- Recorridos de pila
- Directivas de seguridad de código, grupos de
código y niveles de directiva
- Nombres fuertes y firma de ensamblados de
código
- Verificación y validación de ensamblados
- Modelo de seguridad para aplicaciones
ASP.NET
PRÁCTICAS
Identidad de código vs. identidad de
usuario
Se explica de forma práctica con ejemplos el
funcionamiento de ambos modelos: el clásico,
basado en la identidad del usuario que intenta
ejecutar el código, frente al basado en la
identidad del propio código que va a ejecutarse.
Recorridos de pila Se
muestra el funcionamiento de los recorridos de
pila, que permiten verificar que todas las
funciones en la cadena de llamadas poseen permiso
para acceder a un recurso.
Permisos, autorización y directivas de
seguridad de código Mediante algunos
programas de ejemplo se muestra cómo se obtienen
evidencias cuando se carga un ensamblado y cómo se
definen las listas de conjuntos de permisos a
todos los niveles de directiva.
Implantación de un ensamblado seguro
Se utilizan los mecanismos de seguridad de .NET
explicados y se trabaja con los nombres fuertes (SN)
para crear un ensamblado seguro.
2. Acceso seguro
a datos y almacenamiento de secretos en ASP.NET
La mayor parte de aplicaciones web hoy en día
necesitan acceder a bases de datos para obtener
información sobre productos, servicios, clientes,
etc., y presentar a partir de ella páginas
dinámicas. En este módulo aprenderá cómo
configurar el servidor web (IIS y ASP.NET) y
utilizar ADO.NET para acceder a los datos de forma
segura. Se explica además cómo almacenar y acceder
a secretos de forma segura.
- Acceso a BD de datos mediante ADO.NET
- Acceso no autorizado a BD a través de la
revelación de la cadena de conexión
- Formas seguras de acceder a la BD
- Almacenamiento seguro de secretos
PRÁCTICAS
Acceso a la BD desde las páginas
ASP.NET Se crearán páginas de acceso a
BD utilizando ADO.NET.
Ataque a la BD En aquellos
casos en los que el nombre de usuario y contraseña
de acceso a la BD quedan revelados en la cadena de
conexión, por codificarse ésta en la propia página
ASP.NET o componente .NET o almacenarse en un
fichero include separado o en el "global.asax", es
posible acceder directamente a la BD. Se
demuestran algunas formas de hacerse con esta
información y cómo explotarla para conectarse
directamente a la BD sin pasar por el servidor web.
Diseño de componentes de acceso seguro
a la BD Para solucionar las
limitaciones de los métodos de acceso anteriores
se diseñan varios componentes .NET de conexión a la base
de datos. Se muestran las ventajas del uso de
componentes frente a la codificación en ASP.NET.
También se crea un componente COM+ con cadena de
construcción.
Acceso a secretos con DPAPI
Se crea una biblioteca de funciones para acceso a
secretos mediante los métodos de la DPAPI (Data
Protection API). Después se crean varias
aplicaciones diferentes para utilizar la
biblioteca anterior desde ASP.NET.
3. Autenticación mediante formularios en ASP.NET
La autenticación y autorización resultan
fundamentales en toda aplicación web en la que se
desee restringir lo que los usuarios pueden hacer.
La autenticación permite conocer la identidad de
quienes se conectan al servidor. La autorización
permite verificar qué privilegios tiene asignados
cada usuario y saber así qué acciones le están
permitidas. Una vez detectada la necesidad de
autenticar y autorizar a los usuarios, surge la
importante cuestión de decidir cómo se llevan a
cabo. ASP.NET incluye todo un conjunto de nuevas
funcionalidades para simplificar la creación de
aplicaciones que autentican a sus usuarios
mediante formularios.
- Autenticación mediante formularios básica
- Autenticación mediante formularios y XML
- Autenticación mediante formularios y base de
datos
- Autenticación mediante formularios y tickets
personalizados
- Autenticación mediante formularios sin
cookies
- Protección de contenido distinto de páginas
.aspx
- Autenticación mediante formularios y
autorización basada en roles
- Autenticación mediante formularios en
granjas de servidores
- Directivas de seguridad de contraseñas
- Conservación de información de sesión
- Ataques contra las distintas formas de
autenticación y defensa
PRÁCTICAS
Autenticación mediante formularios en
ASP.NET
Se muestran varias soluciones con diferentes
niveles de seguridad: almacenamiento de la
información de usuario en el archivo Web.Config,
en un archivo XML, en una base de datos, con y sin
cookies, utilizando o no roles para autorizar el
acceso, con tickets personalizados, etc.
Almacenamiento de contraseñas
Se desarrolla un mecanismo para no almacenar
contraseñas en la base de datos.
Validación de contraseñas
Se examinan distintas soluciones para proteger
la información a la que pueden acceder los
usuarios autenticados en un sitio web.
Conservación de información de sesión
en ASP.NET
Mantener la información de los usuarios resulta
fundamental para seguir su sesión con el servidor.
Se explican las formas alternativas de
conservación de sesión de usuarios introducidas
por ASP.NET.
Ataques contra las distintas formas de
autenticación Se realizan ataques
contra las formas de autenticación analizadas y
cómo defenderse ante ellos. En especial, se
atacarán los distintos tipos de testigos de sesión.
4. Criptografía en ASP.NET
Hasta la llegada de .NET, programar
aplicaciones que incorporasen sencillas
operaciones criptográficas, como cifrar o calcular
hashes, se convertía en una tarea complicada y
propensa a errores. Gracias a .NET, ya no es
necesario recurrir al uso de la críptica CryptoAPI
o al costoso diseño desde cero. Las nuevas clases
de .NET que se explican en este módulo facilitan
sobremanera la programación de criptografía.
- Clases criptográficas de .NET
- Criptografía de clave secreta
- Hashes y hashes con clave
- Criptografía de clave pública autenticación
PRÁCTICAS
Utilización de criptografía con la
plataforma .NET Se crean varios
ejemplos para aprender el funcionamiento de las
clases de criptografía proporcionadas por .NET
para cifrado/descifrado, cálculo de hashes y
generación de números pseudoaleatorios. Más
adelante, estas clases se utilizarán en muchas
aplicaciones.
5. Seguridad en
servicios web XML desarrollados con .NET
Los servicios web XML facilitan la comunicación
entre sitios web y aplicaciones que necesitan
acceder a los contenidos ofrecidos por el sitio
web. Diseñados sobre estándares abiertos como HTTP,
XML y SOAP, permiten la comunicación
independientemente de la plataforma utilizada.
Pero al exponer interfaces y estar disponibles
para todo el mundo y fácilmente accesible, se
plantean nuevos desafíos de seguridad. En este
módulo se explican algunas de las formas más
eficientes de proteger sus servicios web
utilizando la plataforma .NET.
- Introducción a los servicios web
- Seguridad en el acceso a servicios web:
mecanismos de autenticación
- Seguridad en las comunicaciones con
servicios web: SSL
- Firmas, cifrado y especificaciones de
gestión de claves en XML
PRÁCTICAS
Creación de servicios web con Visual
Studio .NET Se utilizará por su
simplicidad y rapidez el entorno integrado Visual
Studio .NET para crear servicios web que serán
utilizados por la aplicación web de ejemplo.
Seguridad en servicios web
Se repasarán las cuestiones de seguridad
planteadas por el uso de servicios web en la
aplicación. Se verá cómo mejorar la seguridad y
controlar el acceso a los servicios web creados.
Opciones de autenticación para
servicios Web XML Los servicios Web
XML creados mediante ASP.NET disponen de varias
opciones para la autenticación de clientes. Se
repasan
Windows básica (con o sin SSL), Windows integrada,
certificados de cliente, encabezados SOAP.
Criptografía en XML Se
repasan las firmas digitales, el cifrado y la
gestión de claves en XML. |