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.