多くのオンラインサービスは、さまざまな方法でユーザーのアカウントを保護しようとしています。 誰かがIPアドレスを追跡し、変更時にCookieをリセットしています(これはSeclabaで発生します。VKontakteは単に携帯電話の最後の4桁を確認するように要求します)。 誰かが限られた時間だけ生きて、ユーザーに何度もログインを強制します。 これらの方法には長所と短所があります。 ただし、どちらのメカニズムを使用する場合でも、ブラウザー設定とユーザーのOSを追跡すると、アカウントの盗難に対する追加の保護が提供されます( 追加の保護としてですが、決してメインの保護ではありません )。 そして、これまでのところ、この保護メカニズムをサポートする単一のサービスを満たすことができなかったことは非常に奇妙です。
自問してください:どのような場合、次にリソースにアクセスした場合、ユーザーのCookieは前回のアクセスに似ていますが、ブラウザーと使用されているOS(ユーザーエージェントから抽出可能)のデータは変わりますか? 3つの場合のみ:
1.ユーザーが異なるコンピューター(自宅や職場など)からログインし、何らかの理由で異なるブラウザーを使用している。
2.ユーザーは、異なるブラウザーで1台のコンピューターからログインしました(おそらく、Web開発者と特に好奇心の強い開発者のみがこの問題に苦しむでしょう)。
3.ユーザーはセッションから盗まれました。
User-Agentパラメーター全体を検出するのではなく、ブラウザーの種類(IE、FF、Chrome、Safariなど)とオペレーティングシステム(Windows、Linux、MacOS)を検出することをお勧めします。 これにより、ユーザーのコンピューターでソフトウェアを更新する際の誤検知の問題が解決されます。
はい、User-Agentで代用できます。 しかし:
1.かなり頻繁に、セッションのハイジャック犯はこれで急上昇しません。
2. User-Agentスプーフィングを定義できます (以下を参照)。
既存の保護方法に加えて、提案されている保護方法を検討してください。 ハイジャックの古典的なケースと組み合わせて。
IPアドレスの変更を追跡する
これは良い習慣です。 しかし、ユーザーがセッションを聴いているワイヤレスネットワーク経由で自分のアカウントにログインするのに十分な
セッションの期間は限られています
まあ、それはユーザーにとって不便であるだけでなく(多くの場合ログイン)。 また、状況は前の状況とまったく同じです。 繰り返しになりますが、User-Agentの変更は、セッションの乗っ取りの試みの明確なシグナルになる場合があります。
しかし、自宅と職場で異なるブラウザを使用している人はどうでしょうか?
または、User-Agentに基づいて変数Cookieの1つを生成できます。 なぜなら 攻撃者は、多くの場合、サーバーのすべてのCookieを無差別に自分自身にコピーし、その後、別のユーザーエージェントにバインドされた変数を自分自身をコピーして焦げます。
「まあ、User-Agentの交換は難しくありません。shkolotaの経験不足のクラッカーのみがこれに対処しません」
-訪問者の誰かがここで言うでしょう。
実際、それを必要とする人は誰でも代用できます。 しかし、javascript を使用してブラウザーを判別する興味深い方法が役立ちます。 この方法は非常に効果的であるため、自分で確認しました。
ただし、この方法は回避できます。 javascriptはブラウザ(ユーザー(潜在的な攻撃者)側)で実行されるため、その実行を制御して、チェックをバイパスできます(オプションの1つとしてFirebug )。 しかし、これを明確に知る必要があります。 さらに、難読化されたスクリプトはタスクを非常に複雑にします。