2017-06-29 18 views
0

私のアプリケーションでは、reCaptchaを追加していますが、ブルートフォース攻撃を防ぐための2番目の方法もあります。いくつかの調査の後、私は、試行が1秒間で行われた場合にログインしようとしているユーザーをブロックするソリューションを考えました。たとえば、ユーザーがページに入り、資格情報を入力してEnterキーを押してログインしようとすると、それが1秒間に発生した場合、私はユーザーのログイン情報をブラウザに保存していても、人間が可能ではないため、ユーザーをブロックします。ブルートフォースセキュリティ - ログインの時間

しかし、問題は、ページが読み込まれた後にJavaScriptのレイヤーの時間を数えていることです。このソリューションは明らかに簡単にハッキングされます。私はデータベースの使用を考えましたが、それは(要求のために)時間的に信頼できないようです。では、この状況で最適なソリューションを実装するために私は何ができますか?

+0

クライアントとサーバーの両方のブロックを使用します。クライアント側私はログインボタンなどを無効にし、何が起こったのかをユーザーに警告します。サーバー側では、クライアント側の検証がハッキングされる可能性があるため、これも必要です。これらのシナリオでは、時間は重要な要素ではないので、私の意見では、要求時間は重要ではありません。さらに、同じIPからサーバにリクエストが多すぎると、おそらくフラッド攻撃なので、しばらくしてからリクエストを拒否することができます(たとえば、1分以内に10個の失敗したcaptchaなど) – Ursache

答えて

0

これは、ログイン試行の速さを「絞り込む」ように思えます。これは、あるタイプのサーバー「トークン」で実現することができます。

  • ページリクエスト時にトークンが生成されたら、その時刻を保存します。
  • ログインページにトークンを送信します。
  • ログイン要求が戻ったときにトークンがあることを確認します。
  • ログインリクエストの時刻とトークンの生成時刻を比較し、それが間に合うと思われる方法でリクエストを拒否することが早すぎるかどうかを判断します。
  • それぞれのログイン試行を保存し、あまりにも近くに送信された場合はそれらを一緒に拒否します。
関連する問題