PHP でのセッション ハイジャック: クライアントとサーバーの区別を理解する
PHP でのセッション ハイジャックについて調べていると、ユーザーがWeb サイトのセッションを変更する可能性があります。最初のセッション (X というラベルが付いている) を Y または Z に変更できますか?
伝統的に、セッションはブラウザによって確立され、不変であると考えられています。しかし、セッション ハイジャックに関するドキュメントではそうではないと示唆しており、この前提の再評価を促しています。
クライアントとサーバーの区別の詳細
セッション ハイジャックを理解するには、次のことが重要です。クライアント側セッションとサーバー側セッションの区別を認識します。
サーバー側セッション: 識別子は変更可能ですが、コンテンツは保護されています
サーバー側セッション。一般に次のように呼ばれます。セッションは、ID (クライアントとサーバー間で渡される)、コンテンツ (サーバー上で維持される)、および最終アクセス時刻などの潜在的な追加属性で構成されます。通常、セッション ID は、PHP のデフォルトで「PHPSESSID」という名前の Cookie を通じて伝達されます。 Cookie が使用できない場合、PHP は同じ名前のクエリ文字列パラメータに切り替わる可能性があります。
この Cookie またはクエリ パラメータは変更でき、セッション ID も操作できるようになります。ただし、セッションのコンテンツ (ユーザーのログイン ステータスなどを表す) はサーバーに保存されるため変更されず、その特定のサーバーで実行されている PHP スクリプトによってのみ変更できます。
セッション ハイジャックからの保護
セッション ハイジャックを軽減するには、特定のセッション内のユーザーを識別するための他の方法が必要です。これには、ユーザー エージェント、IP アドレス、または別の Cookie の分析が含まれる場合があります。データベース ストレージやカスタム ディレクトリ パスなどの代替セッション ストレージ オプションは回避策を提供しますが、セッションに関係する対話に HTTPS を実装することが、セッション Cookie の盗難を防ぐ最も効果的な方法であることに変わりはありません。
クライアント側セッション: コレクションビューとデータの
サーバー側のセッションとは対照的に、クライアント側のセッションはより広い定義を持ち、さまざまなコンテキストが含まれます。これらには、ブラウザの起動時に開いているページを復元するセッション マネージャー、セッション Cookie、sessionStorage が含まれる場合があります。
ブラウザ セッションは、ビュー (タブ、ウィンドウ) とその関連データのコンパイルとして概念化できます。各ビューは、履歴、現在のページ、および関連するページ データを保持します。共有ドメインを使用すると、単一のブラウザ セッション内でさまざまなページのページ データを共有できますが、別のドメインまたはセッションではデータの交換ができなくなります。
ブラウザを閉じると、アクティブなセッションがすべて終了します。ブラウザの設定によっては、セッションの一部 (履歴や sessionStorage など) が、セッション マネージャーが再度開くために保存される場合があります。セッション Cookie はそれぞれのセッションに固有であり、その終了時に破棄されます。
ブラウザ セッションの制御
ブラウザ セッションの概念は静的ではなく、特定のセッションの影響を受けます。ブラウザ。たとえば、一部のブラウザではセッションを単一ウィンドウ内のタブに限定して表示する場合がありますが、他のブラウザではウィンドウを異なるセッションに分割する場合があります。さらに、ブラウザは多くの場合、セッション関連のデータを作成および変更したり、システムのハード ドライブに保存されているセッションを編集したりするためのツールをユーザーに提供します。
概要: セッション ハイジャックのターゲットはサーバー セッション
要約すると、ブラウザ セッションは実際にブラウザによって確立されますが、ユーザーはこれらのセッションのさまざまな側面を操作できます。ただし、セッション ハイジャックは主にサーバー側のセッションをターゲットにし、クライアントとサーバー間で交換されるセッション ID の操作を伴います。
以上がブラウザのセッションは不変ですか? それともユーザーは Web サイトのセッション ID を変更できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。