Stockage des mots de passe
Actuellement, que ce soit sur KMServer ou sur les comptes locaux KMApp, le mot de passe est un simple hash SHA256, ce qui représente un risque de sécurité d'autant plus important que nous ne savons pas si les machines des utilisateurs finaux sont vierges de tout malware (ce dont on peut déjà plus s'assurer sur Shelter pour le cas de KMServer).
Il faudrait renforcer l'algorithme utilisé et, éventuellement, créer une contrainte sur la longueur du mot de passe (minimale, le but n'est pas de frustrer l'utilisateur). Bien que cette application ne soit faite que pour chanter, il ne faut pas oublier que la plupart du temps, les personnes mettent le même mot de passe sur tous les services, y compris les plus sensibles : il serait stupide que nous soyons indirectement responsables de hack sur certains de nos utilisateurs à cause d'un algorithme de hachage faillible.
bcrypt
est une solution préférable basée sur l'algorithme Blowfish, qui a la particularité de pouvoir être renforcé au fil du temps (pour s'adapter au gain en puissance des ordinateurs). Au-delà de ça, il ne génère pas le même hash pour 2 mots de passe identiques, ce qui rend inutile les rainbow table. Les implémentations en Node de cet algo semblent tous avoir leur problème (notamment l'âge), mais je pense que ces paquets sont quand même safe à utiliser dans notre cas.
Une altenative envisageable est un hash pbkdf2 qui est une fonction de dérivation de clé qui est assez flexible et propose certains avantages de bcrypt.