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.
-
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
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