ユーザーがプロモーションコードを入力するサイトを構築します。ユーザー認証はありませんが、私は誰かが無差別にプロモーションコードを入力しないようにしたいと思います。私はcaptchaを使用することは許されていないので、IPアドレスブロックプロセスを使用することを考えていました。このサイトは、プロモーションコードの入力にX回失敗した場合、ユーザーのIPアドレスをX時間ブロックします。IPアドレスをブロックしてブルートフォース攻撃を防ぎます。
このような実装に問題がありますか?
ユーザーがプロモーションコードを入力するサイトを構築します。ユーザー認証はありませんが、私は誰かが無差別にプロモーションコードを入力しないようにしたいと思います。私はcaptchaを使用することは許されていないので、IPアドレスブロックプロセスを使用することを考えていました。このサイトは、プロモーションコードの入力にX回失敗した場合、ユーザーのIPアドレスをX時間ブロックします。IPアドレスをブロックしてブルートフォース攻撃を防ぎます。
このような実装に問題がありますか?
IPアドレスをブロックすることは、企業のhttpプロキシサーバーのアドレスである可能性があるため、悪い考えです。 ほとんどの法人/機関は、ゲートウェイを使用してインターネットに接続します。そのような場合、あなたが見るIPアドレスはゲートウェイのものであり、N人のユーザーがその背後にいる可能性があります。そのネットワーク内の1人のユーザによる迷惑によりこのIPアドレスをブロックすると、IPベースのブロックによって、他のN人のユーザがサイトを利用できなくなります。これは、一台のルータの背後に多数のコンピュータがNATされている場合に当てはまります。
シナリオ2:同じネットワーク内のXユーザーが誤って間違ったコードをY分以内に入力したとします。そのネットワーク内のすべてのユーザーが再びブロックされ、これ以上コードを入力しません。
cookieベースのシステムを使用することができます。このシステムでは、過去Y分の試行回数をCookie(またはサーバー側のセッション変数)に格納し、毎回検証します。しかし、実装を知っているユーザーが同様に回避する可能性があるため、これは再度安全ではありません。
このシナリオでは、Cookieを使用するのは悪い考えです。代わりにセッションと認証トークンを試してみてください。 – CSharper
IIS 7の場合は、実際にあなたが話していることを正確に行うのに役立つ拡張機能があります。
http://www.iis.net/download/DynamicIPRestrictions
これは、コードを介してこれを実現しようとするからあなたを救うことができます。 「目立つ問題」に関しては、Webアプリケーションのブルートフォース攻撃を防ぐために、この種のことが常に行われています。実際のユーザーが同じようにブルートフォース攻撃を行うコンピューターをコードに入力しようとする必要がある理由は考えられません。あらゆる可能性のあるユーザーエクスペリエンスをテストすると、ポップアップする可能性のある問題をすべて解決することができます。
あなたの命令に隠されたタグを置くことについてTHIS-
取り払わを考慮していないお店にリンクされていない-if? 100%完璧ではありませんが、ブルートフォースを阻止します。
あなたがチェックしなければならないことは、隠れたタグが注文をブロックする数多くのプロモコードをポップアップするかどうかだけです。
私はいくつかの種類のログインを設定することをお勧めします。
あなたの問題をすべて解決する解決策はありませんが、ページロードに数百ミリ秒の遅延を追加するだけでブルートフォース攻撃を減速させたい場合は、大変です!
また、コードを入力したページに最初にアクセスし、隠しフィールドを比較するコードを検証したときに、値を含む隠しフィールドを追加してセッションに同じ値を保存することもできますセッション値に変換します。
攻撃者が1つではなく2つの要求を行うように強制するこの方法では、2つの要求の間の時間を測定し、一定以下の時間でボットを保証することもできます。
netscapeには、すべてのページの読み込み時にipを偽装するプラグインがあることをご存知ですか? – Aristos
サイトは他の情報なしでプロモーションコードの入力を求めているだけですか、またはウィザードプロセスを進んでいるというショッピングカートのようなものですか?プロモーションコードはそのプロセスのフィールドの1つですか? –
ええ、それは他の情報なしでプロモーションコードのための1つのフィールドフォームです – MakkyNZ