Question

Je voudrais empêcher les bots de pirater des comptes faibles protégés par un mot de passe. (par exemple, cela est arrivé à eBay et à d’autres sites importants)

Je vais donc définir une valeur (mémoire) en cache avec l'ip, le nombre d'essais et l'horodatage du dernier essai (memcache-fall-out).

Mais qu'en est-il des robots qui essaient d'ouvrir un compte avec un seul mot de passe? Par exemple, le bot essaie tous les 500 000 comptes utilisateur avec le mot de passe "motdepasse123". Peut-être que 10 vont s'ouvrir.

Donc, ma tentative était de simplement mettre en cache l'adresse IP avec try et de définir max-try à ~ 50. Je le supprimerais après une connexion réussie. Donc, le bon bot veut simplement se connecter avec un compte valide toutes les 49 tentatives de réinitialisation du verrou.

Y at-il un moyen de le faire correctement? Que font les grandes plateformes à ce sujet? Que puis-je faire pour empêcher les idiots de bloquer tous les utilisateurs d’un proxy avec une nouvelle tentative 50 fois?

S'il n'y a pas de meilleure pratique - cela signifie-t-il que toute plate-forme est brutale? Au moins avec un indice sur la réinitialisation des compteurs?

Était-ce utile?

La solution

Je pense que vous pouvez mélanger votre solution à des captchas:

  1. Compter le nombre de tentatives par IP
  2. S'il y a trop d'essais d'une adresse IP donnée dans un délai donné, ajoutez un captcha à votre formulaire de connexion.

Autres conseils

Certains sites vous proposent peut-être deux ou trois tentatives avant de vous faire saisir un captcha avec votre nom d'utilisateur / mot de passe. Le captcha disparaît une fois que vous vous êtes connecté.

Il y avait un article relativement bon sur Coding Horror il y a quelques jours .

Bien que le code se concentre sur Django, il existe une très bonne discussion sur les meilleures méthodes. sur le blog de Simon Willison . Il utilise memcached pour suivre les adresses IP et les échecs de connexion.

Vous pouvez utiliser un vérificateur de force du mot de passe lorsqu'un utilisateur définit leur mot de passe pour s’assurer qu’ils n’utilisent pas un mot de passe facilement forcé.

EDIT: Soyons clairs: cela ne devrait pas être considéré comme une solution complète au problème que vous essayez de résoudre, mais cela devrait être considéré conjointement avec certaines des autres réponses.

Vous ne pourrez jamais empêcher un groupe de bots d'essayer cela à partir de nombreuses adresses IP différentes.

À partir de la même adresse IP: Je dirais que si vous voyez un exemple de "suspect" comportement (nom d'utilisateur non valide ou plusieurs comptes valides avec des tentatives de connexion incorrectes), bloquez simplement la connexion pendant quelques secondes. Si c'est un utilisateur légitime, cela ne les dérangera pas d'attendre quelques secondes. Si c'est un bot, cela les ralentira au point d'être peu pratique. Si vous continuez de voir le comportement de l'adresse IP, bloquez-le simplement, mais laissez une porte hors bande pour les utilisateurs légitimes (appelez le numéro de téléphone x ou envoyez cette adresse par courrier électronique).

VEUILLEZ NOTER: Les adresses IP peuvent être partagées entre des MILLIERS ou même des MILLIONS d'utilisateurs !!! Par exemple, la plupart / tous les utilisateurs d’AOL apparaissent sous la forme d’un très petit ensemble d’adresses IP en raison de l’architecture réseau d’AOL. La plupart des fournisseurs de services Internet mappent leurs larges bases d’utilisateurs sur un petit ensemble d’adresses IP publiques.

Vous ne pouvez pas supposer qu'une adresse IP n'appartient qu'à un seul utilisateur.

Vous ne pouvez pas supposer qu'un seul utilisateur n'utilisera qu'une seule adresse IP.

Cochez la question suivante sur les meilleures pratiques contre la force brute distribuée et les attaques par dictionnaire:

Quelle est la meilleure contre-mesure de la force brute distribuée?

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