ログイン用のブルートフォースプロテクターが必要です。
- ユーザー名に基づいてブロック(最終的にIPを追加)
- dbへのログインの失敗に関する情報を保存する(username、pwd、user-agentなど)
- ロックされると、ロックアウトされていることをユーザーに通知します
私は次のアプリを見ました:
http://code.google.com/p/django-brutebuster/decorators.py では、メソッドはロックされるとNoneを返すため、ユーザーは「正しいユーザー名とパスワードを入力してください。どちらのフィールドでも大文字と小文字が区別されることに注意してください。」アカウントがロックアウトされていることをユーザーに知らせたい。
https://github.com/alexkuhl/django-failedloginblockerdecorators.py では、メソッドは例外を発生させます。これは、debug=Falseの場合にユーザーに500エラーが表示されることを意味します。
http://code.google.com/p/django-axes/ これにはユーザーは含まれません(ipとuser-agentがあります)。decorators.pyでユーザー名を取得する方法がわかりません。また、誰かをログインさせてから、アカウントがロックされている場合にログアウトするというアプローチについても心配しています。私は、ログインを試みる前にアカウントがロックされているかどうかを最初にチェックする#1と#2のアプローチが好きです。
#1と#2については、フォームにエラーを追加することを検討しました。この投稿を見つけました。Django-カスタム認証バックエンドのエラーメッセージで、django.contrib.auth.forms.AuthenticationFormを上書きしますが、どのように組み込むかがわかりません。アプリの新しいフォーム。
誰かが私がやりたいことをするブルートフォースプロテクターを書くことについての提案がありますか?