Donc, je suis en train d'écrire un système utilisateur/authentification pour mon framework web node.js.cas de bordure pour un système utilisateur
De quels cas de bord devrais-je m'inquiéter du point de vue de l'utilisabilité ou de la sécurité?
Donc, je suis en train d'écrire un système utilisateur/authentification pour mon framework web node.js.cas de bordure pour un système utilisateur
De quels cas de bord devrais-je m'inquiéter du point de vue de l'utilisabilité ou de la sécurité?
Les mots de passe doivent être hachés dans la base de données à l'aide d'un algorithme de hachage à sens unique. Cela vous évite d'avoir à connaître leur mot de passe. La sélection du bon algorithme est importante. MD5 est considéré comme non sécurisé en raison de multiples vulnérabilités. SHA1 n'a pas été prouvé non sûr comme MD5, mais il est considéré comme théoriquement faible. Il est préférable de passer à SHA2 ou SHA256. SHA2 est requis par le gouvernement d'ici la fin de 2010.
http://en.wikipedia.org/wiki/MD5
Les mots de passe doivent être salé. Cela empêche les attaques de dictionnaire sur votre mot de passe. En combinant une information aléatoire signifie qu'un attaquant ne peut pas prendre un tas de mots et les essayer un par un pour voir quels hachages correspondent dans votre système.
http://en.wikipedia.org/wiki/Salt_(cryptography)
renforcement clé aide à lutter contre les mots de passe faibles, car les mots de passe faibles mal la sécurité de votre système. Vous pouvez itérer plusieurs fois en utilisant l'algorithme de hachage pour augmenter la complexité des mots de passe de forçage brut.
http://en.wikipedia.org/wiki/Key_strengthening
Assurez-vous que vos utilisateurs soumettent leurs connexions via le protocole HTTPS pour les applications Web. Sinon, ils soumettent leurs mots de passe en clair. N'essayez pas et devenez intelligent avec Javascript. Utilisez juste https et faites-le avec.
Vous devez évaluer la convivialité avec la confidentialité. Utiliser l'adresse e-mail au lieu du nom d'utilisateur est vraiment sympa car c'est facile à retenir, mais si vous avez un site social, les gens ne vont pas aimer que vous publiez leur adresse e-mail. Parfois, il est agréable d'accepter le nom d'utilisateur ou les adresses e-mail.
Une autre chose à prendre en compte est de savoir comment vos utilisateurs resteront connectés à votre système. Sessions, cookies, etc. Les sessions sont faciles, mais elles peuvent devenir coûteuses si votre site compte des millions d'utilisateurs. Vous pouvez utiliser memcache ou l'un des pléthores de caches distribués en Java pour les stocker. Cependant, d'autres alternatives utilisent des HMAC. Rappelez-vous que contrairement aux hachages à sens unique, HMAC possède une clé privée qui doit être protégée sur vos serveurs. Prenez des mesures pour sécuriser la clé privée avec une certaine forme de cryptage symétrique si vous choisissez d'utiliser des cookies HMAC + pour identifier les utilisateurs. Avoir également une date de tombée où le HMAC ne peut pas être utilisé passé. Les HMAC ne devraient être bons que pour une durée déterminée. Votre logiciel doit l'appliquer. Ne comptez pas sur les délais d'expiration des cookies pour le faire pour vous.
D'autres choses à considérer utilisent OpenID, car il aide vraiment vos utilisateurs à accéder à votre site sans avoir à passer par un processus d'inscription. J'ai une application Android que je ne demande pas un compte en avance, mais si elles choisissent d'utiliser certaines fonctionnalités, je leur demande de s'inscrire. De plus, la rétention des utilisateurs est beaucoup plus élevée en ne les forçant pas à se connecter. Les gens tombent lors d'un processus d'inscription.
Assurez-vous que vos méthodes dans votre application forcent quelqu'un à être authentifié avant de s'exécuter. Vous devrez avoir un moyen de forcer tous les appels de méthode à travers une partie de votre application avant que la méthode ne soit appelée, et s'ils ne sont pas authentifiés, redirigez-les vers la connexion. Essayez et rappelez-vous la page qu'ils allaient aussi.
Il y en a d'autres, mais je ne suis pas entièrement sûr que ce soit ce que vous cherchez. Bonne chance, et ça vaut la peine de faire un peu de recherche avec google sur la sécurité.
Merci; Je suis en train de construire une liste de vérification afin que je puisse vérifier mon nouveau système et vérifier certains anciens systèmes. – MathGladiator
cas de bord commun:
Quels sont vos paramètres de fonctionnement (et donc les cas de bordure?) La question est assez vague. Pouvez-vous donner un peu plus d'informations sur le système que vous développez? par exemple. Pourquoi le développes-tu à partir de zéro? – davmac