SlideShare ist ein Scribd-Unternehmen logo
1 von 14
SEGURIDADES EN
APLICACIONES ASP.NET
     Elaborado por:
     David Del Castillo

     DM Quito, agosto del 2011
Creación de un sitio Web con autenticación
 mediante formulario
La comprobación de seguridad se puede hacer de 3 formas:
1- Usando código directo, es decir, en el código de la aplicación
tendremos los nombres y las claves.
2- Los nombres de los usuarios y las claves estarán en el fichero
Web.config.
Se guardara un valor HASH que servirá para comprobar si la clave es
"buena".
3- Los nombres y claves se guardan en una base de datos.
Incrementa el nivel de seguridad, las claves se guardan como valores
HASH.
SHA1 es utilizado por defecto en .NET
1.- Usando código directamente:
 La comprobación se hará al pulsar en el botón LOGIN, por tanto
 el código estará dentro del evento Click.
 Se debe importar la librería System.Web.Security
 •Lo que se hace es comprobar si el nombre y la clave coinciden
 con lo escrito en el código.
 • Además podemos obligar al usuario a “loguearse” cambiando
 en el Web,config la forma de autenticación asi:
 <authentication mode="Windows" />
 - Cambiar por:
 <authentication mode="Forms">
    <forms loginUrl="Login.aspx" />
 </authentication>
Y también en la parte de “autorización” de esta manera:
<authorization>
   <allow users="*" />
Cambiar por:
<authorization>
   <deny users="?" /> <!-- solo los usuarios autenticados -->
</authorization>
2.- Indicando los usuarios en Web.config:

- En el fichero Web.config podemos guardar los nombres de usuarios
y las claves, de forma que el ASP.NET se encargue de comprobar si
debe o no autorizarlo para entrar en nuestro sitio.
-Las claves las vamos a guardar como un valor HASH, es decir, un
valor numérico que será único para cada una de las claves.
- Este código deberá ir en la sección authentication. Asi:
<authentication mode="Forms">
  <forms loginUrl="Login.aspx">
    <credentials passwordFormat="SHA1">
     <user name="pepe"
       password="7550D35A69BE9ACA9AF9C29B880DC3ADEA01BEDC" />
3.- Los nombres y claves se guardan en una base de datos.

- Solo deja iniciar una aplicación después de comprobar que el
usuario y la clave introducidas son correctos. Pero para saber si la
clave introducida es correcta, se busca en una base de datos.
-Aquí el código de la función que valida el usuario y clave:
private bool comprobarUsuario(string nombre, string clave)
{
      // Conectar a la base de datos
      SqlConnection cnn = null;
      //
      try
      {
           // Conectar a la base de datos de SQL Server
        cnn = new SqlConnection(cadenaCnn);
         cnn.Open();
// Definir la cadena que vamos a usar para comprobar si el usuario y el
password son correctos.
// Utilizo parámetros para evitar inyección de código.
           System.Text.StringBuilder sel = new System.Text.StringBuilder();
           // Usando COUNT(*) nos devuelve el total que coincide
           // con lo indicado en el WHERE,
           // por tanto, si la clave y el usuario son correctos,
           // devolverá 1, sino, devolverá 0
sel.Append("SELECT COUNT(*) FROM Usuarios ");
        sel.Append("WHERE Nombre = @Nombre AND Clave = @Clave");
        // Definir el comando que vamos a ejecutar
        SqlCommand cmd = new SqlCommand(sel.ToString(), cnn);
        // Creamos los parámetros
        cmd.Parameters.Add("@Nombre", SqlDbType.NVarChar, 50);
        cmd.Parameters.Add("@Clave", SqlDbType.NVarChar, 40);
        //
        // Asignamos los valores recibidos como parámetro
        cmd.Parameters["@Nombre"].Value = nombre;
        cmd.Parameters["@Clave"].Value = clave;
        //
        // Ejecutamos la consulta
        // ExecuteScalar devuelve la primera columna de la primera fila
        // por tanto, devolverá el número de coincidencias halladas,
        // que si es 1, quiere decir que el usuario y el password son
correctos.
        int t = Convert.ToInt32(cmd.ExecuteScalar());
        // Cerramos la conexión
        cnn.Close();
        //
        // Si el valor devuelto es cero
        // es que no es correcto.
        if( t == 0 )
        {
            return false;
        }
Tanto el nombre del usuario como la clave, los pasamos como
parámetros de la función. Y se buscarán en la base de datos tal y
como los pasemos a esa función.
 Este código "supone" que accedemos a una base de datos que está
indicada en la cadena de conexióncadenaCnn, y que en esa base
de datos hay una tabla llamada Usuarios que al menos tiene dos
campos, uno llamado Nombre que es del tipo nvarchar y que tiene
una longitud de 50 caracteres y el otro llamado Claveque también es
del tipo nvarchar y con una longitud de 40 caracteres.

Guardar los datos de la clave de forma encriptada
Una solución para que el valor de la clave no esté en texto normal, es
encriptándola en formato SHA1 al estilo que lo hace ASP.NET.
Y este es el código de la función generarClaveSHA1:
private string generarClaveSHA1(string nombre) {
// Crear una clave SHA1 como la generada por //
FormsAuthentication.HashPasswordForStoringInConfigFile // Adaptada del ejemplo de
la ayuda en la descripción de SHA1 (Clase)
UTF8Encoding enc = new UTF8Encoding();
byte[] data = enc.GetBytes(nombre);
byte[] result;
SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider();
// This is one implementation of the abstract class SHA1.
result = sha.ComputeHash(data);
// // Convertir los valores en hexadecimal // cuando tiene una cifra hay que
rellenarlo con cero // para que siempre ocupen dos dígitos.
StringBuilder sb = new StringBuilder();
for(int i= 0; i< result.Length; i++) {
if( result[i] < 16 ) {
sb.Append("0"); }
sb.Append(result[i].ToString("x")); }
//
return sb.ToString().ToUpper(); }

Para que ese código funcione hay que tener una importación al espacio de nombres,
System.Security.Cryptography que es donde se define la
clase SHA1CryptoServiceProvider y también a System.Text que es donde se definen las
clases StringBuilder y UTF8Encoding.
Crear una aplicación Web que
 utilice un Web Form para realizar
 la autenticación de los usuarios
 que quieran navegar por el sitio
 Web que la utilice.
- Creación del proyecto y de la página de Login
- Crea un nuevo proyecto en Visual Studio,
selecciona el lenguaje y elije el de Aplicación Web.
- Pedira un nombre para crearlo en el localhost, en
el ejm sera = pruebaLogin.
-Cuando Visual Studio termine de crear el sitio, se
mostrará el proyecto "inicial“
                         -




                                                 12
- Añadimos dos etiquetas, dos cajas de textos
y un botón, asi:




                                            13
-Para añadir una nueva página, en el
menú Proyecto,
-selecciona Agregar Web Forms... esto
mostrará un diálogo como el mostrado en la
figura (el primer caso: Default)




                                             14

Weitere ähnliche Inhalte

Was ist angesagt?

Conexion Entre Php Y Mysqul
Conexion Entre Php Y MysqulConexion Entre Php Y Mysqul
Conexion Entre Php Y Mysquljuan_j_condolo
 
Parámetros en shell script
Parámetros en shell scriptParámetros en shell script
Parámetros en shell scriptPablo Macon
 
Examen febrero 2017-2018_daw_daw_solucion_ (1)
Examen febrero 2017-2018_daw_daw_solucion_ (1)Examen febrero 2017-2018_daw_daw_solucion_ (1)
Examen febrero 2017-2018_daw_daw_solucion_ (1)jomadega1
 
Taller programación web ajax con jquery
Taller programación web  ajax con jqueryTaller programación web  ajax con jquery
Taller programación web ajax con jqueryPablo Galeana Bailey
 
Evidencia: Sesión Virtual Funciones PHP
Evidencia: Sesión Virtual Funciones PHPEvidencia: Sesión Virtual Funciones PHP
Evidencia: Sesión Virtual Funciones PHPSebastián Joya
 
Usando Netbeans para desarrollos en PHP
Usando Netbeans para desarrollos en PHPUsando Netbeans para desarrollos en PHP
Usando Netbeans para desarrollos en PHPDKR Visión SRL
 
Primeros Programas Shell Script
Primeros Programas Shell ScriptPrimeros Programas Shell Script
Primeros Programas Shell ScriptPablo Macon
 
Redirección 301. White Paper Hostalia
Redirección 301. White Paper HostaliaRedirección 301. White Paper Hostalia
Redirección 301. White Paper HostaliaHostalia Internet
 
Diapositivas de objeto conecction
Diapositivas de objeto conecctionDiapositivas de objeto conecction
Diapositivas de objeto conecctionTAPIA SILVA EVELINA
 
Forms 10g procedimientos y cursores
Forms 10g procedimientos y cursoresForms 10g procedimientos y cursores
Forms 10g procedimientos y cursoresEdwin Romero
 
Comandos basicos para la programación en javascript
Comandos basicos para la programación en javascriptComandos basicos para la programación en javascript
Comandos basicos para la programación en javascriptMicco5W
 
Jose manuel avila gonzález
Jose manuel avila gonzálezJose manuel avila gonzález
Jose manuel avila gonzálezJose Avila
 
Jose manuel avila gonzález
Jose manuel avila gonzálezJose manuel avila gonzález
Jose manuel avila gonzálezJose Avila
 
LABORATORIO DE PROGRAMACIÓN I.
LABORATORIO DE PROGRAMACIÓN I.LABORATORIO DE PROGRAMACIÓN I.
LABORATORIO DE PROGRAMACIÓN I.SILVA19_PAMELA
 

Was ist angesagt? (19)

Conexion Entre Php Y Mysqul
Conexion Entre Php Y MysqulConexion Entre Php Y Mysqul
Conexion Entre Php Y Mysqul
 
Parámetros en shell script
Parámetros en shell scriptParámetros en shell script
Parámetros en shell script
 
PHP Y MYSQL
PHP Y MYSQLPHP Y MYSQL
PHP Y MYSQL
 
Connection
ConnectionConnection
Connection
 
Connec
ConnecConnec
Connec
 
Examen febrero 2017-2018_daw_daw_solucion_ (1)
Examen febrero 2017-2018_daw_daw_solucion_ (1)Examen febrero 2017-2018_daw_daw_solucion_ (1)
Examen febrero 2017-2018_daw_daw_solucion_ (1)
 
Taller programación web ajax con jquery
Taller programación web  ajax con jqueryTaller programación web  ajax con jquery
Taller programación web ajax con jquery
 
Evidencia: Sesión Virtual Funciones PHP
Evidencia: Sesión Virtual Funciones PHPEvidencia: Sesión Virtual Funciones PHP
Evidencia: Sesión Virtual Funciones PHP
 
Mail inicio sesion_remota
Mail inicio sesion_remotaMail inicio sesion_remota
Mail inicio sesion_remota
 
Usando Netbeans para desarrollos en PHP
Usando Netbeans para desarrollos en PHPUsando Netbeans para desarrollos en PHP
Usando Netbeans para desarrollos en PHP
 
Primeros Programas Shell Script
Primeros Programas Shell ScriptPrimeros Programas Shell Script
Primeros Programas Shell Script
 
Redirección 301. White Paper Hostalia
Redirección 301. White Paper HostaliaRedirección 301. White Paper Hostalia
Redirección 301. White Paper Hostalia
 
Diapositivas de objeto conecction
Diapositivas de objeto conecctionDiapositivas de objeto conecction
Diapositivas de objeto conecction
 
Forms 10g procedimientos y cursores
Forms 10g procedimientos y cursoresForms 10g procedimientos y cursores
Forms 10g procedimientos y cursores
 
Comandos basicos para la programación en javascript
Comandos basicos para la programación en javascriptComandos basicos para la programación en javascript
Comandos basicos para la programación en javascript
 
Jose manuel avila gonzález
Jose manuel avila gonzálezJose manuel avila gonzález
Jose manuel avila gonzález
 
Jose manuel avila gonzález
Jose manuel avila gonzálezJose manuel avila gonzález
Jose manuel avila gonzález
 
LABORATORIO DE PROGRAMACIÓN I.
LABORATORIO DE PROGRAMACIÓN I.LABORATORIO DE PROGRAMACIÓN I.
LABORATORIO DE PROGRAMACIÓN I.
 
Forzar claves
Forzar clavesForzar claves
Forzar claves
 

Andere mochten auch

Clave de acceso
Clave de accesoClave de acceso
Clave de accesoJuan Gomez
 
Ventanas recuperación de la contraseña
Ventanas recuperación de la contraseñaVentanas recuperación de la contraseña
Ventanas recuperación de la contraseñanancyjonson
 
Mac recuperación de disco duro
Mac recuperación de disco duroMac recuperación de disco duro
Mac recuperación de disco duromatsuzakaa
 
Desarrollando Controles AJAX con Microsoft Silverlight
Desarrollando Controles AJAX con Microsoft SilverlightDesarrollando Controles AJAX con Microsoft Silverlight
Desarrollando Controles AJAX con Microsoft SilverlightChristian Strevel
 
Administrar cuentas de usuario y equipo
Administrar cuentas de usuario y equipoAdministrar cuentas de usuario y equipo
Administrar cuentas de usuario y equipoTania Parra Soto
 

Andere mochten auch (8)

Clave de acceso
Clave de accesoClave de acceso
Clave de acceso
 
Gpg by d7n0
Gpg by d7n0Gpg by d7n0
Gpg by d7n0
 
Ventanas recuperación de la contraseña
Ventanas recuperación de la contraseñaVentanas recuperación de la contraseña
Ventanas recuperación de la contraseña
 
Mac recuperación de disco duro
Mac recuperación de disco duroMac recuperación de disco duro
Mac recuperación de disco duro
 
Desarrollando Controles AJAX con Microsoft Silverlight
Desarrollando Controles AJAX con Microsoft SilverlightDesarrollando Controles AJAX con Microsoft Silverlight
Desarrollando Controles AJAX con Microsoft Silverlight
 
Presentacion321
Presentacion321Presentacion321
Presentacion321
 
Administrar cuentas de usuario y equipo
Administrar cuentas de usuario y equipoAdministrar cuentas de usuario y equipo
Administrar cuentas de usuario y equipo
 
Como empezar leopard
Como empezar leopardComo empezar leopard
Como empezar leopard
 

Ähnlich wie Seguridades asp.Net

Inyección_sql
Inyección_sqlInyección_sql
Inyección_sqljhom123
 
Linq to sql 7
Linq to sql 7Linq to sql 7
Linq to sql 7jcfarit
 
Introducción a recaptcha 3.0
Introducción a recaptcha 3.0Introducción a recaptcha 3.0
Introducción a recaptcha 3.0Jesús Ayús
 
Oracle Y C#
Oracle Y C#Oracle Y C#
Oracle Y C#plsqlags
 
Servicios web en php, perl, java
Servicios web en php, perl, javaServicios web en php, perl, java
Servicios web en php, perl, javaFaby Marcos Solis
 
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosTópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosJosé Antonio Sandoval Acosta
 
la mejor forma de Conectar c# con mysql con archivos de configuracion
 la mejor forma de Conectar c# con mysql con archivos de configuracion  la mejor forma de Conectar c# con mysql con archivos de configuracion
la mejor forma de Conectar c# con mysql con archivos de configuracion juandavid1118
 
Instalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntuInstalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntuDavid Vevelas
 
Ejercicio de automatizacion IntelliJ+reporte.docx
Ejercicio de automatizacion IntelliJ+reporte.docxEjercicio de automatizacion IntelliJ+reporte.docx
Ejercicio de automatizacion IntelliJ+reporte.docxssuser2e6b96
 
Colegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexico
Colegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexicoColegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexico
Colegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexico25415252
 
Conexión de visual basic a bases de datos. María Parra
Conexión de visual basic a bases de datos. María ParraConexión de visual basic a bases de datos. María Parra
Conexión de visual basic a bases de datos. María ParraMariaphlb
 

Ähnlich wie Seguridades asp.Net (20)

284
284284
284
 
Lab-03-PD2-SOAP
Lab-03-PD2-SOAPLab-03-PD2-SOAP
Lab-03-PD2-SOAP
 
Unidad 4
Unidad 4Unidad 4
Unidad 4
 
APIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptxAPIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptx
 
Inyección_sql
Inyección_sqlInyección_sql
Inyección_sql
 
Seguridad En Programación
Seguridad En ProgramaciónSeguridad En Programación
Seguridad En Programación
 
Linq to sql 7
Linq to sql 7Linq to sql 7
Linq to sql 7
 
Introducción a recaptcha 3.0
Introducción a recaptcha 3.0Introducción a recaptcha 3.0
Introducción a recaptcha 3.0
 
Oracle Y C#
Oracle Y C#Oracle Y C#
Oracle Y C#
 
Tutorial bd y php
Tutorial bd y phpTutorial bd y php
Tutorial bd y php
 
Servicios web en php, perl, java
Servicios web en php, perl, javaServicios web en php, perl, java
Servicios web en php, perl, java
 
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosTópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
 
Practica9 bases de datos
Practica9 bases de datosPractica9 bases de datos
Practica9 bases de datos
 
Practica9 bases de datos
Practica9 bases de datosPractica9 bases de datos
Practica9 bases de datos
 
la mejor forma de Conectar c# con mysql con archivos de configuracion
 la mejor forma de Conectar c# con mysql con archivos de configuracion  la mejor forma de Conectar c# con mysql con archivos de configuracion
la mejor forma de Conectar c# con mysql con archivos de configuracion
 
Instalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntuInstalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntu
 
Ejercicio de automatizacion IntelliJ+reporte.docx
Ejercicio de automatizacion IntelliJ+reporte.docxEjercicio de automatizacion IntelliJ+reporte.docx
Ejercicio de automatizacion IntelliJ+reporte.docx
 
Colegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexico
Colegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexicoColegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexico
Colegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexico
 
Nu soap
Nu soapNu soap
Nu soap
 
Conexión de visual basic a bases de datos. María Parra
Conexión de visual basic a bases de datos. María ParraConexión de visual basic a bases de datos. María Parra
Conexión de visual basic a bases de datos. María Parra
 

Kürzlich hochgeladen

TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 

Kürzlich hochgeladen (20)

TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 

Seguridades asp.Net

  • 1. SEGURIDADES EN APLICACIONES ASP.NET Elaborado por: David Del Castillo DM Quito, agosto del 2011
  • 2. Creación de un sitio Web con autenticación mediante formulario La comprobación de seguridad se puede hacer de 3 formas: 1- Usando código directo, es decir, en el código de la aplicación tendremos los nombres y las claves. 2- Los nombres de los usuarios y las claves estarán en el fichero Web.config. Se guardara un valor HASH que servirá para comprobar si la clave es "buena". 3- Los nombres y claves se guardan en una base de datos. Incrementa el nivel de seguridad, las claves se guardan como valores HASH. SHA1 es utilizado por defecto en .NET
  • 3. 1.- Usando código directamente: La comprobación se hará al pulsar en el botón LOGIN, por tanto el código estará dentro del evento Click. Se debe importar la librería System.Web.Security •Lo que se hace es comprobar si el nombre y la clave coinciden con lo escrito en el código. • Además podemos obligar al usuario a “loguearse” cambiando en el Web,config la forma de autenticación asi: <authentication mode="Windows" /> - Cambiar por: <authentication mode="Forms"> <forms loginUrl="Login.aspx" /> </authentication>
  • 4. Y también en la parte de “autorización” de esta manera: <authorization> <allow users="*" /> Cambiar por: <authorization> <deny users="?" /> <!-- solo los usuarios autenticados --> </authorization>
  • 5. 2.- Indicando los usuarios en Web.config: - En el fichero Web.config podemos guardar los nombres de usuarios y las claves, de forma que el ASP.NET se encargue de comprobar si debe o no autorizarlo para entrar en nuestro sitio. -Las claves las vamos a guardar como un valor HASH, es decir, un valor numérico que será único para cada una de las claves. - Este código deberá ir en la sección authentication. Asi: <authentication mode="Forms"> <forms loginUrl="Login.aspx"> <credentials passwordFormat="SHA1"> <user name="pepe" password="7550D35A69BE9ACA9AF9C29B880DC3ADEA01BEDC" />
  • 6. 3.- Los nombres y claves se guardan en una base de datos. - Solo deja iniciar una aplicación después de comprobar que el usuario y la clave introducidas son correctos. Pero para saber si la clave introducida es correcta, se busca en una base de datos.
  • 7. -Aquí el código de la función que valida el usuario y clave: private bool comprobarUsuario(string nombre, string clave) { // Conectar a la base de datos SqlConnection cnn = null; // try { // Conectar a la base de datos de SQL Server cnn = new SqlConnection(cadenaCnn); cnn.Open(); // Definir la cadena que vamos a usar para comprobar si el usuario y el password son correctos. // Utilizo parámetros para evitar inyección de código. System.Text.StringBuilder sel = new System.Text.StringBuilder(); // Usando COUNT(*) nos devuelve el total que coincide // con lo indicado en el WHERE, // por tanto, si la clave y el usuario son correctos, // devolverá 1, sino, devolverá 0
  • 8. sel.Append("SELECT COUNT(*) FROM Usuarios "); sel.Append("WHERE Nombre = @Nombre AND Clave = @Clave"); // Definir el comando que vamos a ejecutar SqlCommand cmd = new SqlCommand(sel.ToString(), cnn); // Creamos los parámetros cmd.Parameters.Add("@Nombre", SqlDbType.NVarChar, 50); cmd.Parameters.Add("@Clave", SqlDbType.NVarChar, 40); // // Asignamos los valores recibidos como parámetro cmd.Parameters["@Nombre"].Value = nombre; cmd.Parameters["@Clave"].Value = clave; // // Ejecutamos la consulta // ExecuteScalar devuelve la primera columna de la primera fila // por tanto, devolverá el número de coincidencias halladas, // que si es 1, quiere decir que el usuario y el password son correctos. int t = Convert.ToInt32(cmd.ExecuteScalar()); // Cerramos la conexión cnn.Close(); // // Si el valor devuelto es cero // es que no es correcto. if( t == 0 ) { return false; }
  • 9. Tanto el nombre del usuario como la clave, los pasamos como parámetros de la función. Y se buscarán en la base de datos tal y como los pasemos a esa función. Este código "supone" que accedemos a una base de datos que está indicada en la cadena de conexióncadenaCnn, y que en esa base de datos hay una tabla llamada Usuarios que al menos tiene dos campos, uno llamado Nombre que es del tipo nvarchar y que tiene una longitud de 50 caracteres y el otro llamado Claveque también es del tipo nvarchar y con una longitud de 40 caracteres. Guardar los datos de la clave de forma encriptada Una solución para que el valor de la clave no esté en texto normal, es encriptándola en formato SHA1 al estilo que lo hace ASP.NET.
  • 10. Y este es el código de la función generarClaveSHA1: private string generarClaveSHA1(string nombre) { // Crear una clave SHA1 como la generada por // FormsAuthentication.HashPasswordForStoringInConfigFile // Adaptada del ejemplo de la ayuda en la descripción de SHA1 (Clase) UTF8Encoding enc = new UTF8Encoding(); byte[] data = enc.GetBytes(nombre); byte[] result; SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider(); // This is one implementation of the abstract class SHA1. result = sha.ComputeHash(data); // // Convertir los valores en hexadecimal // cuando tiene una cifra hay que rellenarlo con cero // para que siempre ocupen dos dígitos. StringBuilder sb = new StringBuilder(); for(int i= 0; i< result.Length; i++) { if( result[i] < 16 ) { sb.Append("0"); } sb.Append(result[i].ToString("x")); } // return sb.ToString().ToUpper(); } Para que ese código funcione hay que tener una importación al espacio de nombres, System.Security.Cryptography que es donde se define la clase SHA1CryptoServiceProvider y también a System.Text que es donde se definen las clases StringBuilder y UTF8Encoding.
  • 11. Crear una aplicación Web que utilice un Web Form para realizar la autenticación de los usuarios que quieran navegar por el sitio Web que la utilice.
  • 12. - Creación del proyecto y de la página de Login - Crea un nuevo proyecto en Visual Studio, selecciona el lenguaje y elije el de Aplicación Web. - Pedira un nombre para crearlo en el localhost, en el ejm sera = pruebaLogin. -Cuando Visual Studio termine de crear el sitio, se mostrará el proyecto "inicial“ - 12
  • 13. - Añadimos dos etiquetas, dos cajas de textos y un botón, asi: 13
  • 14. -Para añadir una nueva página, en el menú Proyecto, -selecciona Agregar Web Forms... esto mostrará un diálogo como el mostrado en la figura (el primer caso: Default) 14