5

認証の失敗が多すぎる場合に IP アドレスをロックアウトする標準的な方法はありますか? 認証とアクセス許可が成功した後にのみスロットリングが開始されるため、組み込みのスロットリングがこれをどのように達成するかわかりません。

4

2 に答える 2

9

ありがとうトム。次のコードで認証をサブクラス化しました。

def authenticate(self, request):

    #
    # first check to see that IP address is not locked out
    # due to too many failed authentication requests.
    #
    auth_failure_key = 'LOGIN_FAILURES_AT_%s' % request.META.get('REMOTE_ADDR')

    auth_failures = cache.get(auth_failure_key) or 0

    # allow up to 3 failures per hour
    if auth_failures >= 3:
        raise exceptions.AuthenticationFailed('Locked out: too many authentication failures')

    try:
        return super(TokenAuthentication, self).authenticate(request)
    except exceptions.AuthenticationFailed as e:

        # update cache
        cache.set(auth_failure_key, auth_failures + 1, 3600)

        raise e
于 2013-04-25T17:29:27.517 に答える
5

すぐに使えるわけではありません。認証クラスの 1 つをサブクラス化し、カスタム認証クラスでその動作を自分で実装する必要があります。

于 2013-04-25T14:15:56.613 に答える