質問
明らかに何らかの機構制限のログインが試みは、セキュリティ上の必須です。がんのようなコンセプトに指数関数的に増加時間をおうかなんなのかに格納します。ろにも興味があ代替ソリューション、preferrablyを含まないcaptchas.
私は推測し、クッキーな作業によりクッキーの拒否または清算して自動でセッション。はなして保管するデータベース?れているか承知していないどのような方法が使用されていないのです。
解決
ユーザーテーブルの一部の列を使用する「FAILED_LOGIN_ATTEMPTS」と「failed_login_time」。最初のログイン失敗あたりの増分、および成功したログイン時にリセットされます。もう一つは、あなたが最後に失敗した時刻と現在の時刻を比較することができます。
あなたのコードは、それがユーザーをロックアウトするまで待機する時間を決定するためにDBにこのデータを使用することができ、許可されるログインの間の時間など
他のヒント
Googleは、私は彼らと一緒に行くことをお勧めしたい、必要なユーザビリティテスト(ない不当な仮定を)行われ、captchaのを使用することを決定したと仮定すると。
私は本物のユーザーだと(特に私には、多くのことを起こるので、多くのウェブサイトおよびそれに関連するパスワードで)私のパスワードを忘れてしまった時にタイムアウトを増やすと、イライラさせられます
データベース内の試みを保存、それはあなたのセキュリティ侵害の試行の監査記録を提供しますので、私見最適なソリューションです。アプリケーションによっては、これはまたは法的要件であってもなくてもよいです。
すべての悪い試みを記録することによって、あなたはまた、そのような要求が(すなわち、誰か/事はブルートフォース攻撃をしようとしている)1つのIPアドレスから来ているかのように、より高いレベルの情報を収集することができますので、IPアドレスをブロックすることができます。これは非常に便利な情報とすることができる。
あなたがしきい値を決定したら、、電子メールを要求するためにそれらを強制しない理由を自分のメールアドレスに送信する(に似すなわち「私は自分のパスワードを忘れてしまった」)、またはあなたがCAPCHAのアプローチのために行くことができます。
ロックアウトのポリシーは、すべてが順調と良いのですが、バランスがあります。
推測可能 -一つの考慮事項は、ユーザ名のconsructionについて考えているのですか?それらはすべてで列挙することはできますか?
私は、Outlook Web Access /イントラネットサービス、特定のアプリを務めた従業員ポータルとドットコムのために外部のAppペンをテストしていました。 (ウェブサイト自体にExecの/ Managamentチーム、とGoogleは、Facebook、LinkedInのなどの同類を介して)ユーザーを列挙するのは簡単でした。あなたは(FIRSTNAMEその後、姓が1つの文字列として入力された)ユーザ名ログオンの形式を持ったら、私は、その3件のストライキへと政策からユーザーの100年代をシャットアウトする機能を持っていました。
あなたは、ヒットされているユーザーIDを知っているフラグを維持し、それがしきい値に達した場合、単純にそのユーザのために何の受け入れを停止します。しかし、それはあなたがすべてのユーザーのための余分なデータ値を格納意味ます。
私は試行間の指数関数的に増加する時間の概念が好きで、[...]
の代わりに指数関数的に使用して時間を増加させる、あなたが実際に連続試行間のランダム化の遅れを持っている可能性があります。
たぶん、あなたはここの人々を使用している技術について説明している場合、より具体的な例を支援することができるようになります。
情報サーバ側に保管してください。これは、あなたも(複数のマシンからの)分散型攻撃を防御することができるようになります。
あなたはブロックがいくつかの時間のためのログインが、例えば言う例えば3回の失敗試行後10分言いたいことがあります。指数関数的に増加する時間は私にはいいですね。そして、はい、サーバー側のセッションまたはデータベースに情報を保存します。データベースが優れています。いいえクッキーの事業は、ユーザによる操作が容易でないからです。
また、他の誰かが失敗しようと、有効なユーザーのパスワードを推測しようとしている間に有効なユーザーがブロックされたメッセージを得るかもしれないということは十分に可能であるように、クライアントのIP adrressに対して、このような試みをマップすることがあります。