Mini aplicación de gestión de contraseñas

Este fin de semana, lo he dedicado (a ratos) a montar una pequeña prueba de concepto de una aplicación que sirve para almacenar contraseñas, al estilo de otras muchas que existen en el mercado.

La aplicación tiene dos partes diferenciadas:

  • Un backend donde se gestionan los usuarios y las contraseñas, montado con Django Rest Framework
  • Un frontend donde se accede a los datos, corriendo con Vue.js

En ambos casos se ha minimizado al máximo la complejidad y funcionamiento, porque simplemente quería probar la posibilidad de montar una aplicación de este estilo.

El frontend solo tiene dos páginas (bueno, tres si contamos la de error): el login de usuarios y la página para ver los datos

Si se intenta acceder a la página de escritorio, sin estar registrado, lanza un error

Una vez validado el usuario, puede acceder a las contraseñas que tiene almacenadas y si bien en primer momento se ven enmascaradas con asteriscos, si pulsa encima, puede verlas en texto plano y al cabo de 3 segundos, se vuelve a ocultar

También existe la opción de cargar nuevas contraseñas, a través de un pequeño formulario al uso

y el cambio quedará automáticamente reflejado en la página del usuario

Como característica importante, y algo que me ha llevado mucho rato de leer documentación, es que las contraseñas se almacenan en la tabla de la base de datos encriptadas y se desencriptan para mostrarlas en el perfil del usuario

Con lo cual, aún teniendo acceso a la base de datos, es imposible determinar que contraseña corresponde a cada servicio.

En esta ocasión no os muestro código en el post, pues es bastante largo, así que os remito directamente al repositorio de GitHub donde podéis ver el código y usarlo, como siempre, para vuestros propios desarrollos.

Por Jose Manuel Sanz Prieto

Desarrollador web. En este blog hablo de fotografía, programación con Django, Python, PHP y privacidad.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *