Web アプリケーションで、異なるクライアント (ブラウザ) から複数のログインが発生した場合にセッションが無効化されていない場合、どのような影響がありますか?
2 に答える
これは、実行している Web アプリケーションの種類によって異なります。単純な Web サイトを実行している場合、人々がログインのさまざまなインスタンスを維持できるという事実以外に、まったく影響がない可能性があります (Google と Facebook はどこでもこれを行っていると考えてください)。MMO ゲームや、1 つのアカウントで一意のキャラクターを制御するゲームを実行している場合、同じキャラクターのインスタンスを複数持つことは不可能です。ほとんどの場合、複数のログインが必要になる心配はありません。ただし、より具体的なシナリオがある場合は、アドバイスを提供するのに役立ちます。
非常に幅広い質問ですが、一般的に、懸念は2つの主要なカテゴリに分類されます。
容量: セッションは、概念的にはメンバーを含むオブジェクトです。1 つのセッション オブジェクトが、アプリケーション サーバーのメモリ内のスペースを占有します。サーバーのハードウェアと構成によっては、サーバーが数百または場合によっては数十万のセッション オブジェクトを追跡しなければならない場合に、最終的にパフォーマンスの問題が発生します。容量の問題は、アプリケーションの作成が不十分な場合に悪化します。各ユーザー セッションがデータベース サーバー接続を開始する Web アプリケーションを想像してみてください。ここで、データベース接続の数に Web アプリケーションのアクティブなセッションの数を掛けます。現在、アプリケーション サーバーは、何百万ものアクティブなセッションをサポートするように調整または構築されている可能性があります。データベース サーバーについては、同じことは言えないかもしれません。
セキュリティ: これは主にアプリケーションの設計の問題です。多数の本番アプリでは、HTTPS を選択的に使用することを実践しています。これにより、ログイン プロセスは TLS で保護されますが、ユーザーがログインした後はユーザー エクスペリエンス全体が開かれます。これには、JSESSION_ID を使用したアプリケーション サーバーとのさらなる通信が含まれます。現在、セッション ID がアクティブである時間が長いほど、ハイジャックされやすくなります。セッションを積極的に無効にすることは、銀行アプリなどで見られるものです。健全なバンキング アプリケーションが 10 分以上アイドル状態でバンキング セッションを維持する理由はありません。