Joven hacker sonriendo

Hackeamos su software

cero falsos positivos

Inteligencia experta + tecnología especializada

Evitar Mensajes de Errores en Autenticación

Nuestros ethical hackers explican cómo evitar vulnerabilidades de seguridad mediante la programación segura en C Sharp al evitar mensajes de error en autenticación. Los mensajes de error pueden contener información que puede ser aprovechada por un atacante para vulnerar la aplicación.

Necesidad

No emitir mensajes de error identificables en la autenticación.

Contexto

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

  1. Se está desarrollando una aplicación en C Sharp.

  2. Los mensajes de error de autenticación muestran qué parte de la autenticación falló.

Solución

Al momento de programar una aplicación expuesta a Internet es necesario considerar al usuario final como uno malintencionado. Un usuario malintencionado puede aprovecharse de vulnerabilidades conocidas, descuidos, fallos o eventos inesperados por la aplicación para efectuar un ataque. Por este motivo, es altamente recomendable desarrollar utilizando buenas prácticas de programación. Las buenas prácticas de programación consisten en una serie de criterios que sirven para mejorar la seguridad de las aplicaciones desarrollando código robusto y computacionalmente seguro.

Una buena práctica de programación consiste en manejar de forma adecuada los mensajes de error que se muestran al usuario. Si al momento de validar las credenciales de un usuario, la aplicación detecta que el nombre de usuario y/o la contraseña no son válidos, la aplicación no debe mostrar qué parte de la autenticación falló. Esto se debe a que el mensaje de error puede ser utilizado por un atacante para crear una lista de nombres de usuario y contraseñas válidos, resultando así en un robo de credenciales.

En este artículo mostraremos cómo configurar adecuadamente los mensajes de error de autenticación en C Sharp. Para ello debemos seguir la siguiente serie de pasos:

  1. Se define la condición que valida si los datos de autenticación del usuario son correctos o no. Inmediatamente después de hacer la consulta en la base de datos. Posteriormente se define el nuevo mensaje de error de autenticación. Se recomienda colocar un mensaje de error genérico que no dé mayor información [2]. Como se muestra en el siguiente código:

    login-errormsg.cs
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    {
      using (DataTable dt = LookupUser(textBoxUsername.Text, textBoxPassword.Text )){
        if (dt.Rows.Count == 0){
          textBoxUsername.Focus();
          MessageBox.Show("La combinación de credenciales no es válida.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
          textBoxUsername.Focus();
          return;
        }
      }
    }
    
  2. Cabe resaltar que aplicando el fragmento de código anterior, cuando la autenticación no se realiza exitosamente, el mensaje de error no muestra si error se produjo en el nombre de usuario o la contraseña.




Haz un comentario

Estado de los servicios - Términos de Uso