pavel-kalmykov / mantecabox

Servicio de almacenamiento de ficheros seguro en la nube para la asignatura de Seguridad en el Diseño de Software
GNU General Public License v3.0
2 stars 1 forks source link

Implementar factor de doble autenticación para el login de usuarios #16

Closed pavel-kalmykov closed 6 years ago

pavel-kalmykov commented 6 years ago

Descripción

Para disponer de un añadido de seguridad de que, incluso si un atacante obtuviera nuestras credenciales, no pueda iniciar sesión con total facilidad, queremos implementar un factor de doble autenticación para el usuario para que en el login proporcione, además de sus credenciales, un código de seguridad único que le será enviado a su correo electrónico para comprobar que el inicio de sesión sea legítimo.

Podemos abordar esta implementación de dos formas: buscar una librería que implemente algún algoritmo estándar de factor de doble autenticación o bien que este código sea un simple número de seis dígitos generado aleatoriamente. En cualquier caso, lo más seguro es que necesitemos que dicho código generado, además de enviarlo al correo electrónico, se tenga que almacenar en la base de datos para asociarse al usuario para el cual se ha generado el mismo.

También necesitaremos proporcionar un sistema de detección de intentos (tanto exitosos como fallidos) de inicio de sesión. De esta forma, antes de iniciar sesión, comprobaremos que, si han habido n intentos de sesión fallidos en los últimos m minutos, el usuario no podrá iniciar sesión, ni aunque disponga de los credenciales válidos hasta pasados dichos minutos, por ejemplo.

Condiciones de satisfacción

Referencias

pavel-kalmykov commented 6 years ago

Desarrollando en two-factor-auth

pavel-kalmykov commented 6 years ago

Ahora, para validar el correo usamos la librería checkmail (sólo validando el formato, ya que comprobar si el correo existe tarda mucho).

pavel-kalmykov commented 6 years ago

Finalmente vamos a utilizar una implementación propia para una mayor simplicidad de implementación.

pavel-kalmykov commented 6 years ago

Finalmente hemos logrado resolver el problema de los nulls en SQL y JSON con la librería null

pavel-kalmykov commented 6 years ago

Es preferible usar un endpoint distinto para la generación del código de verificación y su envío por correo para no mezclarlo con la lógica de negocio propia del login.

pavel-kalmykov commented 6 years ago

La parte de control de inicios de sesión, en realidad, aunque esté relacionada con el factor de doble autenticación, es un concepto diferente y totalmente autónomo a este.

Realizaremos la implementación de esa funcionalidad de seguridad en una issue futura.

pavel-kalmykov commented 6 years ago

En las nuevas funcionaliades añadidas existen algunos valores que deberían de estar parametrizados, pero eso se realizará en #17