2010-06-11 3 views
3

J'essaie de sécuriser mon application 3 rails contre la connexion brutale deviner. J'utilise authlogic. Quelle est la meilleure façon de forcer un utilisateur (ou un bot) à remplir un captcha après un nombre spécifique de tentatives de connexion échouées? Est-ce que authlogic a un mécanisme intégré pour enregistrer combien de tentatives infructueuses consécutives sont venues de la même ip? J'apprécierais toute aide.Comment puis-je forcer l'utilisateur à remplir un captcha après un nombre spécifique d'échecs de connexion avec authlogic?

Répondre

1

Authlogic a une Authlogic :: Session :: BruteForceProtection Module (vous pouvez trouver comment il est mis en œuvre here). Fondamentalement, il bloque un compte après N connexions infructueuses. De son documentation:

Par défaut, l'option de configuration de consecutive_failed_logins_limit est réglé sur 50, si quelqu'un ne consécutivement à se connecter après 50 tentatives de leur compte sera suspendue. C'est un numéro très libéral et à ce stade, il devrait être évident que quelque chose ne va pas. Si vous souhaitez réduire ce nombre juste définir la configuration à un nombre inférieur:

class UserSession < Authlogic::Session::Base 
    consecutive_failed_logins_limit 10 
    end 

Pour activer ce champ votre modèle DOIT avoir un failed_login_count champ (entier).

Vous pouvez activer ce module et ajouter votre mécanisme captcha dans le contrôleur.

Éditer plus tard: Je viens de voir la partie 'De la même IP'.

Si vous avez besoin d'une protection 'du même IP' (je suppose que vous voulez dire que l'attaquant n'est pas intéressé par un compte particulier, donc le but n'est pas de casser un compte particulier, mais dans mon opinion qu'il ne devrait pas être fait à ce niveau (rails serveur d'application). Cela devrait être géré par votre administrateur système, sur le serveur frontal (proxy).

+1

Remarque: Vous devrez toujours indiquer à votre serveur d'applications que la connexion a échoué, non? Ma seule suggestion est d'invoquer 'being_brute_force_protected?' Lorsque vous essayez de vous connecter manuellement. Si la valeur est true, alors rendre le capcha, définir la limite à 3 tentatives, et le temps de verrouillage pour 1 milliseconde. –

Questions connexes