0

ログイン画面があるアプリケーションがあります。一度に試行できる最大ログイン回数を制限する機能をアプリケーションに追加したいと考えています。たとえば、ユーザーが間違ったログインや 5 回以上のログインを試みた場合user namepassword次の 60 秒間はログインできないというメッセージが表示されます。その 60 秒以内にログインしようとすると、ログインできないはずです。60 秒後、正しいパスワードでログインできるようになります。

4

5 に答える 5

0

ログインがサービスからのものである場合は、そこで処理することをお勧めします。NSUserDefaults に入れたものはすべて読み取られ、変更される可能性があります。

于 2013-05-16T17:21:59.837 に答える
0

インスタンス変数 int を作成し、ログインに失敗するたびにそれをインクリメントするのと同じくらい簡単である必要があります。5 に達すると、ログイン試行が防止され、同時に NSTimer が起動され、60 秒後にカウントが 0 に消去されます。

于 2013-05-16T15:19:44.887 に答える
0

試行が最後に失敗した時刻と試行回数をデフォルトで保存します。

于 2013-05-16T15:19:55.777 に答える
0

コンセプトとして:

start a session for the login process if there is none;
setting up the timer in that session (startime) if not already set

loop by post to self:

    check login;

    on unsuccessfull login:

        counting unsuccessfull logins;
        if timer / counter are hit, instead of presenting the login fields, 
        show an error message;
        if time of no login is reached, show login fields again, reset counter;
        return;

    on successfull login:

        stop and drop the current session (to get rid of the timer stuff);
        start the real session;
        forward to application screen;

ただし、これはすべてセッション Cookie に依存するため、誰かがあなたのアプリをブルート フォースするのを防ぐことはできません。通常、これらの bf 攻撃は Cookie を返さないため、常に最初の試行で新しいセッションを開始します。多大な努力、効果なし。IP アドレスに依存することも役に立ちません。ボット ネットに攻撃された場合、1 秒あたりさまざまな IP から数百のリクエストを受け取ることになります。

ログインウィンドウ/画面にCSRFトークンのようなものを用意することをお勧めします

于 2013-05-16T15:34:35.647 に答える