8
votes

Comment puis-je limiter la quantité de tentatives de connexion à Django

J'essaie d'obtenir un formulaire de connexion que j'ai dans Django pour permettre uniquement trois tentatives de connexion avant de rediriger une page "Aide de connexion". J'utilise actuellement la vue intégrée "django.contrib.auth.views.login" avec un modèle personnalisé. Comment puis-je forcer à rediriger à une autre page après les tentatives de connexion sans échec?


0 commentaires

3 Réponses :


-8
votes

Vous pouvez enregistrer une session si l'utilisateur n'a pas réussi à vous connecter. xxx pré>

et s'ils ne parviennent pas à se connecter à nouveau p>

request.SESSioN['login_tries'] = 2


1 commentaires

La session n'existera que si le client envoie des en-têtes de cookie, qu'un attaquant de force brute ne fera pas. Il serait préférable de relier les tentatives de connexion avec un compte utilisateur spécifique ou un client spécifique (ou les deux).



14
votes

Il y a en fait un projet là-bas qui fournit un middleware Django à faire juste ceci, appelé django- Axes . Il suffit de l'installer avec les instructions fournies, puis définissez axes_login_failure_limit au nombre de tentatives de connexion que vous souhaitez avant qu'un enregistrement soit créé pour les connexions défaillantes. Vous devrez toujours vérifier cet enregistrement lorsque vous souhaitez verrouiller quelqu'un, cependant.


2 commentaires

Merci Daniel. J'ai choisi la réponse de Dotty car il était plus proche de la méthode que j'ai fini par utiliser. Une partie de la question était ma propre inexpérience avec Python et Django et, en tant que tel, je n'avais pas assez de connaissances pour poser la bonne question. Je pense que votre réponse aurait été aussi bonne si elle ne serait pas meilleure si je voulais quelque chose avec de nombreuses fonctionnalités, et je pourrais bien mettre fin à l'utilisation de l'utilisation lorsque je suis plus familier avec le cadre.


Pas de soucis, je voulais juste vous faire savoir qu'il y avait déjà une solution qui pourrait potentiellement fonctionner. Je ne savais pas que cela existait non plus alors j'ai appris quelque chose dans le processus aussi!



0
votes

J'utilise django-frein et memcached xxx


1 commentaires

Django-frein n'est plus activement entretenu.