Post on 04-Jul-2015
Como Aplicar Seguridad a Nuestras Aplicaciones Web Utilizando Tecnologías ASP.NET
Resumen
Es importante tomar en cuenta las posibles amenazas presentes cuando tenemos en producción un sitio web.
Estas amenazas van desde el ingreso no autorizado al sitio, así como también, la manipulación indebida de
datos de alta confidencialidad. Para esto existe una Solución "Seguridad en las aplicaciones Web con
Tecnologías ASP.NET". Una de las principales ventajas que trae esta tecnología es Aplicar Membresía,
Roles, Almacenamiento Encriptado de datos, administración de usuarios, manejo de procedimientos
almacenados para realizar consultas parame trizadas. Manipulación de archivos de configuración, manejo de
clases utilizando orientación a objetos, Desarrollo de la aplicación por capas entre otros, a continuación te
presento lo que necesitas, los pasos y las mejores prácticas (Best Practices) para lograr de manera correcta
todo el funcionamiento en tu sitio (Esto igualmente aplica para la EXCELENTE PAGINA COMO LO ES
WWW.BIENSIMPLE.COM).
Por otra parte, es importante acotar que es una parte de la seguridad en una aplicación Web, dedicada al
tema de permisos. Pero que también puede revisar SQL Injection, y en general el tema de ataques a
aplicaciones web, como también el tema de validaciones en cualquier ingreso que haga el usuario
Necesitas
Hablando de Software
Necesitas: Visual Studio 2005 o 2008, o en su defecto Visual Web Developer Express Edition
Proveedor de Datos: Microsoft SQLSERVER EXPRESS 2008
Pasos
Paso 1
Muy sencillo, ejecuta Visual Studio, ir a Archivos > Nuevo > Sitio Web, dale un nombre al proyecto y
aceptamos. Puedes utilizar cualquier Lenguaje VB, C#...
Paso 2
Una de las características importantes de esta tecnología es que tu puede hacer uso de la herramienta de
configuración el cual en el mismo tu puedes crear roles, membresia, funciones para darle acceso al usuario a
ciertas partes de tu sitio, siempre y cuando el mismo este loguea y este autorizado. "Automaticamente se
Crea tu Base de datos con sus respectivas Tablas, Usuarios, Funciones, Roles, Procedimientos
Almacendados, Datos Encriptados. Esta lleva por nombre ASPNETDB.MDF" Sin necesidad de que tu crees la
Base de Datos.
¿Como podemos acceder a esta herramienta? Lo hacemos de la siguiente manera: Entras a la Menu que dice
Sitio Web / Herramienta de Configuracion de ASP.NET "Click"
Paso 3
Antes de entrar a la Herramienta de Configuracion vamos a observar los recursos que tengo al crear mi
proyecto y la creacion del directorio hacia donde los usuarios entraran al monento de autenticarse.
Visualizacion de Los Recursos.
Creando un directorio:
El directorio lleva por nombre Miembros.
Retomando lo mencionado en la herramienta de configuracion Entras a la Menu que dice Sitio Web /
Herramienta de Configuracion de ASP.NET "Click"
Al Hecer click en la opcion se levantara una página de configuración de ASP.NET
En el podemos encontrar varias opciones:
La Primera que debemos hacer click es en Proveedor: La zona Proveedor sirve para administrar el modo en
que ASP.NET almacena datos para las características de la aplicación, como cuentas de usuario, funciones y
otros valores de configuración. Recuerda que la Base de datos se Creara Automaticamente.
Al darle click aparece una opcion de prueba debes darle click, con esto se logra la visualizacion correcta de la
conexion a la base de datos
debes obtener una respuesta asi: "La conexión con la base de datos se estableció correctamente".
*La Segunda *debemos crear el tipo de autenticacion Windows o Forms eso lo hacemos en la Zona de
Suguridad.
*Nota: *Debes tomar en cuenta algo
A.- "Desde Internet" Seleccionar la opción si los usuarios obtienen acceso al sitio Web desde Internet
B.- "Desde una red local" Si los mismos tendran acceso desde una red privada.
Selecciona la que veas mas conveniente para el desarrollo de tu web. Partiendo de los requerimientos. Una
vez Hecho Click en el Boton "Listo". parte Inferior derecho.
Al darle click al boton se activara la las opciones de crear usuario
La Segunda es que debemos crear los usuario que entraran a nuestro sitio
Click en la Zona Seguridad.
Cuando creamos una aplicación web nos interesa que tenga una cierta seguridad en toda la aplicación o en
zonas concretas de esta ya que tenemos una serie de recursos que deseamos proteger y solo sean
accesibles por tipo de usuario especificado. ASP.NET utiliza un sistema de seguridad que le permite restringir
el acceso a cuentas de usuario específicas o a las funciones (Roles) a las que pertenecen las cuentas de
usuario. Con la ficha Seguridad, puede administrar cuentas de usuario, funciones y reglas de acceso para el
sitio Web. Antes de utilizar la ficha Seguridad por primera vez, utilice el Asistente para la configuración de
seguridad para configuraciones de seguridad básicas para el sitio Web.
En el nos mostrara varios campos (Nombre, Contraseña, Pregunta Secreta, Respuesta Secreta, Email)
Importante: Podran notar que en la cantidad de usuario que anteriormente estaban que era 0 cambio
ahora a 1
La Tercera Opcion es en la Zona Seguridad,
En el vamos a definir las Funciones es decir los roles que estaran presente en nuestro sitio. en otras palabras
debemos indicarle a nuestro sitio que usuario sera invitado, y cual sera administrador o quienes son miembros
de nuestro sitio.
Para hacerlos, activamos funciones y click en la opcion crear nueva funcion, nos mostrara un cuadro de texto
en el cual se debe colocar las funciones existentes. En nuestro caso vamos a colocar Miembros. Aceptar y
Listo.
*Una vez que habilito creo la funcion (Rol). este llevara el nombre de Miembros.*
Una vez que agrego la funcion puedo administrarla e igualmente eliminarla. Ahora las funciones cambiaron de
0 a 1
Notese que ahora podemos administrar a los usuarios que estan dentro de el rol antes creado. es decir
podemos decirle a nuestro sitio para darle mayor seguridad que el usuario biensimple esta asignado al rol
miembros.
De la siguiente manera:
Click en la opcion Administrar Usuarios / Click al Usuario a Editar Funciones / y va aparecer
ilustrativamente asi:
Click en la casilla miembros, ahi le estamos diciendo que el usuario [BienSimple] esta asignado al Rol
Miembros
La Cuarta Opcion en la misma Zona de Seguridad se encuentra una opcion que dice: Crear Reglas de
Acceso. Ahora vamos a asignarles a que usuarios van a estran a mi sitio siempre y cuando los mismos esten
logueados.
Nota: Para hacerlo mas facil, desde un comienzo creamos en el sitio una carpeta que el cual lleva por nombre
Miembros
Nos va aparecer en la parte izquierda todas los directorios presentes en mi sitio, por ejemplo app_data la
carpeta Miembros antes creada entre otros... De manera ilustrada es
asi:
Ahora, Click en la carpeta miembros, y le vamos a decir en la las opciones que tengo al otro lado que en la
misma no van a entrar usuarios desconocidos, es decir,
Selecciona la carpeta miembros, del Lado Derecho, Selecciono Usuarios anónimos, Denegar.
Con esto queremos decir, que los usuarios que no esten loguados, no podran entrar a los recursos que se
encuentren dentro de la carpeta Miembros y que estos seran denegados. Click en el boton Aceptar
Vamos a colocarlo de manera ilustrada:
Listo amigo ya tienes configurado todo tu sitio con sus respectiva seguridad.
Ya puedes cerrar la ventana del explorador e ir para la Visual Studio y comenzar a estruturar tu sitio
incluyendo la Seguridad.
Paso 4
En el explorador de soluciones que tienes en la parte derecha "Ahi tienes todos tus recursos antes
mencionados" mas la base de datos que el mismo crea automaticamente.
Importante: Hasta estos momentos hemos visto lo poderoso que es la herramienta SIN UNA LINEA DE
CODIGO
Veamos:
Click en Actualizar y,
Observemos la bd creada ASPNETDB.MDF todo eso se muestra al darle al boton actualizar.
Para continuar, vamos agregar un nuevo items. Nos posicionamos en la raiz de nuestro proyecto, Nuevo /
Agregar un Nuevo ITEM o Elemento. Agregamos una pagina el cual se llamara Login.aspx
Al hacerlo el mismo se agregara a nuestro sitio
Una de las funcionalidades que trae Visual Studio es que el mismo nos trae controles personalizados como
por ejemplo:
Login: en el mismo tu colocas nombre y contraseña
[LoginStatus]: Puedes Iniciar o Cerrar Tu Sesion Tipo Hotmail u Otros Proveedores de cuentas de Correo
[LoginName]: Para que al loguerate aparezca el nombre usuario de usuario autenticado
[CreateUserWizard]: Para crear nuevos usuarios
Una vez comprendido todo esto, abrimos la pagina login.aspx le damos una apariencia interesante y luego
arrastramos el control login y listo sres, ya tenemos nuestro sitio con sus respectivas seguridades.
Agregamos una plantilla a nuestro sitio.
Diseño / Insertar tabla Activamos la Opcion Plantilla.
Ahora es cuestion de creatividad para poder estructurar bien nuestro sitio, lo he creado de la siguiente
manera:
Asi como agregue una nueva carpeta al sitio el cual se llama "Miembros" ahora hice agregando una que se
llama "Images"
Las hubique, y luego las arrastre a la carpeta y listo.
Es importante acotar que en la pagina agregamos un control, login esto lo hacemos en el misma caja de
herramientas que nos aporta visual studio. observemos "Ficha Inicio de Sesion"
Ahora vamos a colocar recursos dentro de la carpeta Miembros y Comenzamos a loguearnos para que
observemos que solo entrar usuarios que estan autenticados y que pertenecen al rol Miembros.
Paso 5
Agregamos una nueva pagina dentro de la carpeta Miembros y le dejamos el nombre que trae por defecto
Default.aspx "Puede tener cualquier nombre"
Nota: Si al usuario se le ocurre hacer el llamado de la pagina que se encuentra dentro del directorio miembros
la misma configuracion antes creada evalua si el mism esta autenticado, de no ser asi automaticamente lo
reenvia a la pagina de login. Veamos...
Observemos la url:
http://localhost:1619/BienSimple/login.aspx?ReturnUrl=%2fBienSimple%2fMiembros%2fDefault.aspx
Vamos a probar del todo la pagina con su respectiva "SEGURIDAD"
Observemos que estamos colocando el usuario biensimple creado con el administrador al darle click al boton
Iniciar Sesion observen lo que pasa:
Hemos entrado a la pagina Default.aspx porque nos hemos autenticado bien.
Ahora intentemos con un usuario que no existe
Me muestra un mensaje de error porque el usuario Nelson No existe.
Es importante acotar que para que el al momento de loguerame me envie a la pagina Default.aspx
primeramente se debe configurar una propiedad del control login que es "[DestinationPageURL]" asi:
Boton Derecho en el contro / Propiedad / Buscar----> [DestinationPageURL] y ubicar donde esta la
pagina a la que una vez logueado me envie hasta alla.
Paso 6
Podemos crear Nuevos Usuarios:
Si arrastramos un control [CreateUserWizard] podemos ubicar en sus propiedades un evento que se llama
[CreateUser] y con el simple hecho de colocar Roles.[AddUserToRole](Nombre del Control es decir
[CreateUserWizard1].[UserName], Nombre de la Funcion. Acuerdate antes creada Miembros)
Es decir, de la siguiente manera:
De manera ilustrada la pagina con el control queda de la siguiente manera:
Listo ya podemos crear usuarios con toda seguridad.
Por otra parte podemos colocar otros controles a la pagina para aumentar seguridad en cuanto al cerrado de
la sesion.
Agregamos Un control [LoginName1]: Muestra el nombre del usuario Logueado, y [LoginStatus1]: Muestra el
cerrado de la sesion
Al darle click a Cerrar Sesion Automaticamente la pagina lo envia a Login.aspx
Puedo ampliarte mas tus conocimientos, enviame un mail a ngomezleal@hotmail.com y con gusto puedo
ayudarte a crear aplicaciones seguras.