Como Aplicar Seguridad a Nuestras Aplicaciones Web Utilizando Tecnologías ASP.NET

Publicado: noviembre 19, 2008 en Categoria All

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, asi como tambien, la manipulación indebida de datos de alta confidencialidad. Para esto existe una Solución “Seguridad en las aplicaciones Web con Tecnologias ASP.NET”. Una de las principales ventajas que trae esta tecnología es Aplicar Membresia, Roles, Almacenamiento Encriptado de datos, administracion de usuarios, manejo de procedimientos almacenados para realizar consultas parametrizadas. 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 practicas (Best Practices) para lograr de manera correcta todo el funcionamiento en tu sitio. Por favor Recomiendo le des un zoom a la pagina considerable para que puedas visualizar mejor las imagenes.

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
Hablando de Ti: Necesitas: un poco de conocimientos no muy profundo en HTML y Ganas de que tu sitio sea totalmente protegido.

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.

Mil gracias por todo, Saludos nelson Gomez desde Venezuela.

 

Importante

Es importante que tomes en cuenta que la seguridad en las aplicaciones que desarrollamos es MUY RECOMENDABLE.

Puedes entrar a mi blog http://NELSONGOMEZ.WORDPRESS.COM y puedo en el colocar de manera ilustrada la forma, los pasos, para que puedas tomar muy a fondo la seguridad.

Por otra parte puedo enseñarte a que tu archivo de configuracion debe estar encriptada la cadena de conexión.

para mayor información escribeme a mi correo ngomezleal@hotmail.com con gusto te ayudare.

Saludos Nelson Gomez

Hasta la Próxima, espero les haya gustado el articulo.

POR FAVOR DEJA TUS COMENTARIOS, AYUDAN A CRECER…

comentarios
  1. javier borboa montes dice:

    la verdad esta muy interesante interesante este articulo me gustaria que cundo publiques mas me los mandes directemente a mi correo claro si no es molestia……

    ya que este lo encontre en la red con ayuda de san google……jaajajj😄..

  2. Antonio dice:

    la verdad es que es muy buena tu explicacion pero lo que me gustaria seria que me mostraras como se ase un loguin mediante una base de datos independiente de la que trae bueno si se puede tambien bueno pues muchas gracias
    ATTE.
    A.Z.R

  3. Jean dice:

    Hola Nelson, estoy intentando aplicar autenticacion a mi sitio web y para ello estoy siguiento este tutoria, pero tengo el siguiente problema, despues de ejecutar aspnet_regsql y seguir los pasos del asistente para establecer la conexion al sql y que se cree la base de datos, me voy al paso de la pestana del proveedor y seleccion la primera opcion que dice:
    “seleccionar un solo proveedor para todos los datos de administracion del sitio web” y luego de eso le doy click a donde dice test, para que pruebe la conexion y obtento el siguiente mensaje de error:

    Provider Management
    Could not establish a connection to the database.
    If you have not yet created the SQL Server database, exit the Web Site Administration tool, use the aspnet_regsql command-line utility to create and configure the database, and then return to this tool to set the provider.

    Pero como te comente, ese paso ya lo realice, incluso verifique en el sql y la base de datos se creo con sus respectivas tablas…no se que otra cosa deba verificar. Muchas gracias por toda la ayuda que me puedas prestar.

  4. Wilbor dice:

    es un articulo muy interesante me sirvio de mucho pero podrias enviarme el paso 6 pero con codigo para C# porfa gracias por tu articulo……………..

  5. Edgar Acedo Gallardo dice:

    pata kisiera mas informacion sobre lo que es seguridad asp.net pero ejemplos con imagenes el control login quedo muy bien explicado pero los otros controles kisiera saber como se aplican ojala lo leas pronto y me envies el mensaje es de suma urgencia trabajo con visual C# enviame la informacion a mi correo si no fuese muxo la molestia
    PERU

  6. Cesar Ossa dice:

    Seguí todos los pasos pero al momento de entrar en la pestaña proveedor no me muestra lo que dice; solo muestra para seleccionar una opción AspNetSqlProvider y la base de datos que se llama prueba(esta no se de donde salio pero yo nunca la cree y tampoco esta en mi sql).
    Sera que alguien me puede ayudar pues lo hice en otro equipo y me sale lo mismo?

    • Nelson Gomez dice:

      Buenas tardes Cesar espero estes bien.
      Pido mil disculpas por todo, y por no responderte a tiempo.

      Si no has resuelto, agregame al msn asi conversamos mejor y te puedo hasta apoyar via remota.
      Que me dices?

  7. Luis Turcios dice:

    Gracias es un articulo muy interesante me ha ayudado bastante pero lamentablemente las imagenes no se pueden ver aun asi se entiende bastante

    Saludos

  8. carlos osorio dice:

    Excelente aporte men.!!…….

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s