セッションと Cookie + インタビューの質問の違いの紹介

セッション

セッション:

  • 対応する英単語:セッション
  • ユーザーはブラウザーを開き、一連のアクションを実行してから、ブラウザーを閉じます。全体のプロセスはセッションと呼ばれます
  • セッションには複数のリクエストが含まれます

セッション メカニズムは B/S 構造の一部であり、その主な機能はセッション状態を保存することです。(ユーザーが正常にログインした後、ユーザーのログイン状態をセッションに保存します)

セッションメカニズムを使用する理由

  • HTTP プロトコルはステートレス プロトコルであるため
    • ステートレス: リクエスト時に B と S が接続され、リクエストが終了すると接続が切断されます。
    • サーバーへの負担を軽減できます。
  • セッションの状態を保存するには、セッションのみを使用できます。
  • 利用しない理由と申請書
    • リクエストのスコープが小さすぎます: 1 回のリクエスト後に破棄され、リクエストが再度行われたときにリクエスト オブジェクトが同じではありません。
    • アプリケーションのスコープが大きすぎます: 1 つのアプリケーションに対して 1 つのアプリケーション、ブラウザが開いてから閉じられ、別のブラウザが開かれますが、それはまだ同じアプリケーション オブジェクトであり、セッションの状態を満たしていません。
  • ブラウザを開いてから閉じるまで、セッション オブジェクトは同じです。

セッションの実現原理

画像の説明:

単語の説明:

  1. ブラウザが初めてサーバーにアクセスすると、サーバーはオブジェクトと対応する sessionId を生成し、sessionId をブラウザに返します。
  2. ブラウザーは、sessionId を取得すると、sessionId を Cookie の形式で保存します。
  3. 次回サーバーにアクセスすると、ブラウザメモリ内のsessionIdが自動的にサーバーに送信され、サーバーはsessionIdに基づいて対応するセッションオブジェクトを見つけます
  4. ブラウザを閉じた後、メモリが消え、Cookie が消え、sessionId が消え、セッションが終了します

最初の訪問では、サーバーから返された sessionId が応答で受信され、cookie=7A の形式で保存されます。

 

次回アクセスすると、sessionId が自動的にサーバーに送信されます。

クッキー無効

通常、サーバーは sessionId をブラウザーに送信しますが、ブラウザーはそれを拒否するため、ブラウザーがサーバーにアクセスするたびに、返されるセッション オブジェクトはまったく新しいものになります。

Cookie が無効になっているときにセッション メカニズムを使用する場合は、次のようにします。

URL 書き換えメカニズムを使用します: http://localhost:8080/testSession;jsessionid=E62524626BE76547D7287F6B7BB73239

サービス パスにアクセスするたびに sessionId を連結する必要があるため、このようなコストは比較的大きくなります。

要約する

  • セッションはサーバー側で保存され、サーバー側で作成されます
    • 作成されたメソッド:
      • request.getSession(); // セッション オブジェクトを取得します
      • request.getSession(false); // 現在のセッションが存在するかどうかを判断し、存在しない場合、返されるセッション オブジェクトは null
  • HTTP プロトコルの B/S 構造上、サーバーはいつブラウザが閉じられたかわからないため、セッションが破棄されることはありませんが、一定時間セッション オブジェクトを操作しないと、セッション オブジェクトは破棄されます。 . デフォルトの時間は 30 分です。
  • セッション:セッションの作成~セッションの破棄
  • セッションには 2 つのモードがあります。
    • 手動破棄: サーバーが API を呼び出します: invalidate();
    • タイムアウトによる破壊: 一定期間、誰もセッション オブジェクトを操作しません

クッキー

  • セッションの実装原則では、各セッション オブジェクトには対応する sessionId があります。
  • 例: JSESSIONID=5CB05924651451FD94F42011461CC4FB、このキーと値のペアのデータは Cookie インスタンスです。
  • ブラウザが閉じられておらず、ユーザーがリクエストを再度開始する限り、ブラウザは「実行中のメモリ」内の Cookie をサーバーに自動的に送信します。
  • サーバーは、「5CB05924651451FD94F42011461CC4FB」の値に従って、対応するセッション オブジェクトを見つけます。
  • Cookie のキーと値はどちらも文字列です

位置を保存

  • 最後にブラウザクライアントに保存
  • 実行中のメモリに保存することもできます [Cookie はブラウザを閉じると消えます]
  • ディスクファイルにも保存可能【永久保存】

効果

  • Cookie は、セッションと同様に、セッション状態を保存するために使用されます

Java での Cookie の操作

Cookie インスタンスを作成します。

Cookie product = new Cookie("productId","1gaga3g23t32g");
Cookie user = new Cookie("name","admin");

クッキーの有効時間を設定する

  • 有効時間 > 0 Cookie はディスクに書き込まれます。
  • 有効時間 = 0 Cookie がディスクに書き込まれ、以前に設定された Cookie が上書きされます。これは、Cookie を削除することとも理解できます。
  • 有効時間 < 0 Cookie はブラウザの実行メモリに保存されます
  • この Cookie が設定されていない場合、ブラウザの実行メモリに保存されます
// 设置有效时间
product.setMaxAge(60 * 60);

Cookie に関連付けられたパスを設定します

URL の例: http://localhost:8080/cookie/create

デフォルトの関連付けられたパスは http://localhost:8080/cookie/* です。これらのパス ブラウザは自動的に Cookie をサーバーに送信します。

関連付けられたパスが設定されている場合、設定はメインです

product.setPath("/cookie");

Cookie をブラウザに返す

response.addCookie(product);

サーバーはクッキーを取得します

戻り値は配列、Cookieが取得できない場合はnullを返す

Cookie[] cookies = req.getCookies();
if (cookies != null) {
    for (Cookie cookie : cookies) {
        String name = cookie.getName();
        String value = cookie.getValue();
        System.out.println(name+"--"+value);
    }
}

面接の質問

クッキーとセッションの違い

1.セッション定義:

Session オブジェクトはサーバー側に格納され、主にユーザー セッションで必要な属性データと構成データを格納するために使用されます。SessionID はブラウザ側に保存する必要があり、ブラウザはインターフェイス リクエストを送信するときにこの SessionID を保持する必要があります。

2. クッキーの定義:

Cookie とは、ブラウザ側に保存される小さなテキスト データで、サイズは 4KB を超えません。

一部の Web サイトでは、Session メカニズムを使用してユーザーの ID を識別し、通常は SessionID を Cookie に保存します。ネットワーク リクエストを送信すると、Cookie がリクエスト ヘッダーに一緒にサーバーに送信されます。

Cookie とセッションが必要な理由

Cookie とセッションは、クライアントとサーバーの間で状態情報を保存および維持するために使用される 2 つの異なるテクノロジです。

Cookie は、クライアントによって保存され、クライアントとサーバーの間でやり取りされる小さなデータです。Cookie はブラウザのファイル システムに保存され、ブラウザがリクエストを送信すると、これらのデータが自動的に転送されます。

セッションは、サーバー側に保存される小さなデータであり、ユーザーの状態を追跡するために使用できます。セッションデータはサーバーに保存され、サーバーによって維持されます。クライアントがサーバーにアクセスすると、サーバーはクライアントの要求に従ってクライアントの ID を判別し、クライアントにセッション ID を割り当てます。クライアントは要求するたびにセッション ID を持ち、サーバーはこのセッション ID を使用してクライアントを識別し、対応するセッション データを取得します。

セッションの動作原理を詳しく説明してください。

セッションは、Web アプリケーションでユーザーの状態を追跡するためのメカニズムです。ユーザーが Web アプリケーションにアクセスすると、サーバーはそのユーザーの一意のセッション ID を作成し、その ID をユーザーのブラウザーの Cookie に保存します。セッション ID は、ユーザーがアプリケーションと対話するときにユーザーを識別し、ユーザーに関する情報をサーバー側に格納するために、サーバーによって使用されます。この情報には、ユーザーのログイン状態、ショッピング カートの内容、閲覧履歴などが含まれます。セッションを使用することで、Web アプリケーションは、ユーザー認証、データの永続化など、より高度な機能を実装できます。

セッションが Cookie よりも安全なのはなぜですか?

クッキーは、ユーザーのコンピューターにデータを保存するためのメカニズムです。Web アプリケーションは、Cookie を使用して、ユーザー ID、設定、ショッピング カートの内容などのユーザー情報を保存できます。ただし、Cookie はユーザーのコンピューターに保存され、クライアント側でアクセスして変更できるため、Cookie は攻撃や偽造に対してより脆弱になり、セキュリティ上の脅威になります。

対照的に、セッション メカニズムはデータをサーバー側に保存し、ユーザーが Web アプリケーションと対話する場合にのみクライアントに送信します。ユーザーはサーバーに保存されたセッション データにアクセスしたり変更したりできないため、セッションは Cookie よりも安全です。さらに、Web アプリケーションは SSL/TLS 暗号化を使用して転送中のセッション データを保護し、セキュリティをさらに強化できます。

一般に、Cookie とセッションの両方が Web アプリケーションのユーザー追跡に使用されますが、セッションはユーザーのコンピューターではなくサーバー側にデータを保存し、セキュリティ リスクを軽減するため、より安全です。

おすすめ

転載: blog.csdn.net/weixin_45934981/article/details/130192836