Question

J'ai vu des applications web avec des limitations pour les tentatives de connexion de l'utilisateur.

est-il une nécessité de sécurité et, si oui, pourquoi?

Par exemple: vous avez eu trois tentatives de connexion infructueuses, nous allons essayer à nouveau en 10 minutes !!

Était-ce utile?

La solution

Précision Ceci est une fin aux autres réponses. L'utilisation d'un bon mis en œuvre captcha à côté d'un mécanisme anti-bruteforce en utilisant par exemple des sessions.
Le questionneur a marqué cela comme accepté en supposant que captchas sont illisibles par des machines (elle est presque à droite) et il est donc obtenir des points négatifs, parce que les gens pensent que ce n'est pas une réponse complète et ils ont raison.


En utilisant également un bon CAPTCHA mis en œuvre pourrait être une alternative à ENPOWER votre sécurité des applications contre les attaques par la force brute. il y a un grande variété de fournisseurs de captcha disponible gratuitement, nous allons essayer la voie facile si vous êtes pressé. S'il vous plaît aussi considérer qu'il ya personnes outta disant ici que "Oh, non! cette chose captcha est pas assez sûr et ils sont parfois droit!" .

"Pour ceux d'entre vous qui ne connaissent pas, un CAPTCHA est un programme qui peut dire si son utilisateur est un être humain ou un autre ordinateur. Ils » re ces petites images de texte déformé que vous traduisez lorsque vous vous inscrivez à Gmail ou laisser un commentaire sur leur blog de quelqu'un. but est de faire en sorte que quelqu'un ne pas utiliser un ordinateur pour vous inscrire pour des millions de comptes en ligne automatiquement, ou. . » ref .

Autres conseils

J'ai vu une approche créative à cette fois ...

Pour chaque tentative de connexion, qui échoue, le temps augmente de façon exponentielle ... lock-out.

attempt | lockout time
======================
   1    |     2s
   2    |     4s
   3    |     8s
   4    |    16s
   5    |    32s
   6    |    64s
   7    |   128s
   8    |   256s
   9    |   512s
  10    |  1024s

En théorie, il permet à l'utilisateur faire une erreur ou deux, mais dès qu'il semble devenir un « piratage » tentative, le pirate se verrouille pour plus et de plus longues périodes de temps.

Je ne l'ai pas utilisé moi-même (encore), mais sur le plan conceptuel je aime bien l'idée. Bien sûr, lors de la connexion réussie, le compteur est remis à zéro.

La limitation du nombre de tentatives à effectuer sur un site Web sont pour empêcher la force brutale (automatisée) attaque votre site. Si vous ne limitez pas ces tentatives, un pirate informatique peut mettre en place un script pour deviner les mots de passe garder jusqu'à ce qu'il en trouve un, et cela peut avoir un impact de la disponibilité de votre serveur web.

En règle générale, vous voudrez peut-être temps l'utilisateur à (10 minutes que vous avez mentionné) après 3 tentatives, et les lock-out au bout de 6 ou 9 tentatives répétées consécutives, ce qui oblige l'utilisateur à vous contacter afin de déverrouiller leur compte. Ceci est mis en place parce que quelqu'un peut modifier leurs scripts pour ajuster votre délai d'attente.

Si les utilisateurs peuvent définir leurs propres mots de passe, certains bot / enfant va essayer de se connecter avec une liste de mots de passe communs, et de réussir. Et s'ils ne savent pas tous les utilisateurs, ils vont essayer des noms communs comme admin, simon, rico, etc.

Il ne permet pas à l'utilisateur juste FLAG en session, car ils peuvent simplement supprimer le cookie ou une requête sur leur extrémité param. Vous devez avoir un nombre de tentatives de connexion infructueuses pour les deux IP et un nom de connexion. Peut-être être plus indulgent pour la propriété intellectuelle, car il peut être partagé entre plusieurs utilisateurs.

Pour mes propres projets, j'ai écrit une bibliothèque de « floodcontrol » généralisée qui gère ce genre de chose.

Il me permet de spécifier le nombre de tentatives peuvent être faites dans une quantité X de temps. Il permet un certain nombre de tentatives « grâce » dans un court laps de temps, de sorte que seul le comportement vraiment inhabituel sera pris.

enregistrement I dans la base de données un certain nombre de choses:

  • L'adresse IP (ou les 24 premiers bits de celui-ci)
  • L'action qui a été tenté (ie 'log in', 'search', 'commentaire')
  • Le temps de la tentative
  • Nombre de tentatives (compteur de tentatives)

Pour chaque tentative fait je requête sur l'adresse IP partielle et l'action, et si une précédente tentative a été faite dans une certaine fenêtre de temps j'incrémenter le compteur de tentatives pour cette tentative. Si le compteur de tentatives dépasse le nombre de tentatives de grâce ont permis puis-je vérifier si la dernière tentative a été en quelques secondes X de maintenant et si oui, return false - Par conséquent, l'action sera bloquée (et l'utilisateur sera dit d'attendre X secondes avant d'essayer encore). Si le compteur de tentatives est inférieur au nombre de tentatives de grâce alors je retourne vrai et laisser glisser.

Si une personne avec la même adresse IP est par la suite, le nombre précédent de tentative aura pas tiré par les cheveux, car il sera trop longtemps.

Oui, il est nécessaire de protéger les comptes de sophistiqués attaques par force brute - comme, en utilisant les robots et les fichiers de dictionnaire -. Jusqu'à quelqu'un juste essayer de deviner le mot de passe du compte

Je pense mettre un «échec des tentatives de compteur dans le DB serait le moyen le plus sûr et le plus facile d'aller. De cette façon, l'utilisateur ne peut pas contourner (en désactivant les cookies). Réinitialiser lors de la connexion réussie bien sûr.

Remise à zéro des tentatives infructueuses après une connexion correcte fait presque tout le système sans valeur.

Tout utilisateur enregistré peut alors faire trois suppositions sur quelqu'un d'autre compte et mot de passe, puis connectez-vous avec leur propre pour réinitialiser le compteur, et répéter - qui peut être trop automatisé,. Ainsi, un utilisateur normal enregistré peut forcer les mots de passe admin brutale, par exemple.

La remise à zéro doit être fait par l'administrateur, et non pas simplement vous connecter avec succès.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top