ブルートフォースクッキー、忘れましたか?

実際には、多かれ少なかれすべての大規模プロジェクトで、入力されたログインとパスワードによるユーザーの承認システムがあります。 ユーザーがユーザー名とパスワードを入力し、それらがデータベース内のデータに対応する場合、そのユーザーは承認されたと見なされ、そのユーザー用のセッションが生成され、Cookieに記録されます。 恐らくあなた方全員がブルートフォースについて聞いたことがあるでしょう。 多くの人々はそれを覚えており、一定の間隔でログイン/パスワードを入力する限られた試みの形で保護を実装しています。 しかし、ほとんどすべての人が、Cookieに隠されたセッションがブルートフォースになる可能性があることを忘れています。 さらに、認証中にユーザー名とパスワードを知っておく必要があり、ここではセッションのみを知っている必要があります。 はい。また、攻撃者がポータルに登録することで確認できるセッションテンプレート(文字数、文字数)。



防衛を組織する方法についての私の考えを共有したいと思います。

セッションという言葉で、プロセスではなく、将来ユーザーを識別するためにCookieに保存される一連の文字を理解できるように、すぐに予約します。



1) IPにバインドします。

Cookieからのセッション値がデータベースからのセッション値と等しいが、ユーザーのIPがデータベースに記録されたユーザーのIP(認証が成功した場合)と異なる場合、ログインとパスワードの要求を含む認証フォームを出力します。

もちろん、ユーザーにこのオプションを無効にする機会を与える必要があります。 プロバイダーは外部IPを変更することがあり(フックする場合)、30分以内にユーザーはこのアルゴリズムを数回キックできます。 ただし、デフォルトではオプションが有効になっているはずです! これにより、クラッカーが大幅に制限されます。



2) セッションは可能な限り大きくする必要があり、その長さはさまざまであり、可能なすべての文字で構成する必要があります。

セッションが短いほど、バリエーションが少なくなり、既存のセッションを選択する可能性が高くなります。

一定の長さで、クラッカーは自分のアカウントを登録しているので、プログラムを構成するのに必要な長さ-総当たりで時間を最小化する-を簡単に決定できます。

なぜなら クラッカーはポータルに登録できます。また、セッションに関する統計、それが構成するシンボルを収集することもできます。 セッションが小文字のラテン文字のみで構成されていることに気付き、プログラムでこれらのルールを作成すると、選択時間を大幅に節約できます。 キャラクターを1つ追加するだけで、ハッキングの時間が大幅に増加します!



3) 環境変数HTTP_USER_AGENTの使用を検討してください。

ブラウザーとデータベース内の承認されたユーザーのシステムに関する情報を書き留め、セッションを受け入れるときにこの状態を確認する場合、少なくともハッキング時間を数倍増やします。



ボトムライン:もちろん、ブルートフォースセッションの試みを検出できますが、ブルートフォースが実行されるIPをブロックすることはできません。 これにより、このIPから実際のユーザーのセッションを正常に使用できなくなります。 したがって、ブルートフォースの時間を増やすことしかできません。 上記の3つのポイントを使用すると、クラッカーがこのアイデアを単に放棄するほど簡単に時間を増やすことができます。



この情報がウェブ開発者に役立つことを願っています。



All Articles