Joven hacker sonriendo

Cifrar credenciales de autenticación

Nuestros ethical hackers explican cómo evitar vulnerabilidades de seguridad mediante la configuración segura de credenciales de autenticación en ASP.NET al cifrar las credenciales de autenticación y acceso a través de funciones hash utilizando la librería System.Security.Cryptography.

Necesidad

Se requiere cifrar el contenido de las variables que se asignan a través de campos de texto en una forma HTML.

Contexto

A continuación se describen las circunstancias bajo las cuales la siguiente solución tiene sentido:

  1. Se tiene una aplicación web, que tiene campos de autenticación usuario/password. Además es necesario que dichos valores viajen cifrados a través de la red.

  2. La aplicación está hecha en ASP.NET.

Solución

A la hora de desarrollar una aplicación web es necesario tomar ciertas medidas de seguridad para evitar que usuarios malintencionados puedan vulnerar la aplicación al aprovecharse de malas prácticas de programación o descuidos de los programadores y administradores de la página.

Para realizar una aplicación web computacionalmente segura existen muchas pautas a tener en cuenta. Sin embargo, en este artículo nos concentraremos únicamente en las prácticas para una creación segura de aplicaciones web desarrolladas en ASP.NET, con campos de autenticación usuario y contraseña.

Las credenciales de autenticación son quizás la información más valiosa dentro de una aplicación web. Éstas pueden dar acceso a toda la información contenida dentro de una página o base de datos. Es por este motivo que es necesario asegurarse que las credenciales de acceso estén protegidas en todo momento, impidiendo que usuarios no autorizados tengan acceso a ellas. Para el caso de las credenciales de autenticación que se basan en formularios para validar el inicio de sesión de los usuarios las contraseñas pueden ser almacenadas en un origen de datos externo o en el archivo de configuración de aplicaciones.

Las contraseñas guardadas son encriptadas utilizando un algoritmo hash como lo son: Message Digest 5 (MD5) o Secure Hash Algorithm-1 (SHA1). Las contraseñas encriptadas no pueden ser utilizadas para generar la contraseña original. Sin embargo, existe el riesgo de un ataque con diccionario, en donde el atacante compara los hashes generados por una lista común de palabras con el hash generado por la contraseña [1]. Por este motivo, los usuarios deben elegir contraseñas poco comunes que contengan números y caracteres especiales.

  1. Para encriptar las credenciales de autenticación en ASP.NET se cifran cadenas en sumas de verificación utilizando el algoritmo de cifrado MD5, presente en el espacio de nombres System.Security.Cryptography [2]. Para utilizar dicho espacio de nombres, es necesario incluir la librería System.Security.Cryptography al inicio del programa. La siguiente porción de código ilustra la utilización de la librería:

EncryptMD5.py
1
2
3
4
5
6
7
Public Function EncryptMD5 (ByVal text As String) As String
            Dim md5Hasher As New MD5CryptoServiceProvider
            Dim encoder As String
            encoder = ToString (md5Hasher.ComputeHash(GetBytes (text))).Replace("-", "")
            Return encoder

        End Function



Haz un comentario

Estado de los servicios - Términos de Uso