2010-11-05 3 views
1

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é?

+1

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

Répondre

7

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é.

+0

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

1

cas de bord commun:

  • Les gens oublient les mots de passe.
  • Les gens désactivent Javascript, Flash, cookies ... toute technologie que vous pourriez penser à compter.
  • La sécurité est difficile, et tout ce que vous avez à faire est de vous tromper une fois pour ruiner votre mois. Ma recommandation: Que quelqu'un d'autre le fasse. Si vous pouvez éviter de réinventer cette roue, faites-le.
Questions connexes