1. ホーム
  2. javascript

[解決済み] クッキーとセッションとは何ですか?

2023-01-11 03:02:09

質問

私は、クッキーとセッションについて専門的に理解しようとしています。 ブラウザがサーバーに接続すると、サーバーはブラウザに "phpsessid" を持つクッキーをクライアント ブラウザのクッキー フォルダに "paste" するよう要求する、ということは知っています。

これで "phpsessid" が得られたので、クライアントがサーバーに入ると、ブラウザはサーバーに "phpsessid" を送信し、サーバーは tmp フォルダを見て、一致すれば、ユーザーがこのクライアントに対して持つすべてのデータをロードバックしますが、このプロセスにはちょっと戸惑います。

セッションと Cookie を作成するこれらのプロセス、つまり舞台裏で何が起こっているのかを理解する手助けをしてくれる人がいればありがたいのですが。

どのように解決するのですか?

これを見てみましょう。

クッキー そして セッション はどちらもブラウザが行う異なるリクエストの間でアプリケーションの状態を保持するための方法です。のページを要求するたびにログインする必要がないのは、この方法のおかげです。 StackOverflow .

クッキー

クッキーは、キーと値のペアでデータを保持する小さなデータビットです(最大4KB)。

name=value; name2=value2

これらの設定は JavaScript を使用するか、またはサーバー経由で HTTP ヘッダ .

Cookieには有効期限が設定されています。HTTPヘッダを使用した例です。

Set-Cookie: name2=value2; Expires=Wed, 19 Jun 2021 10:18:14 GMT

という名前のクッキーをブラウザに設定することになります。 name2 という値で value2 という値で、約9年後に失効します。

クッキーは 非常に安全性が低い というのは、ユーザーが簡単にその内容を操作できるからです。そのため 常にクッキーのデータを検証する . クッキーから得られるものが、必ずしも期待するものであるとは思わないでください。

クッキーは通常、ログイン状態を保持するために使用されます。ユーザー名と特別なハッシュがブラウザから送信され、サーバーはアクセスを承認するためにデータベースと照合します。

クッキーはまた、しばしば セッション の作成にもよく使われます。

セッション

セッションは少し違います。各ユーザーは セッション ID を取得し、それをサーバに送って検証してもらいます。 クッキー によって、あるいは GET変数 .

セッションは通常短命であるため、アプリケーション間の一時的な状態を保存するのに理想的です。また、ユーザーがブラウザを閉じると、セッションは失効します。

セッションはクッキーよりも安全だと考えられていますが、それは変数自体が サーバー . 以下はその仕組みです。

  1. サーバーがセッションを開く (HTTPヘッダーでクッキーを設定)
  2. サーバーがセッション変数を設定する
  3. クライアントがページを変更
  4. クライアントは、ステップ1からのセッションIDとともに、すべてのクッキーを送信します。
  5. サーバーは、CookieからセッションIDを読み取ります。
  6. サーバーは、データベース(またはメモリなど)のリストからセッションIDを照合します。
  7. サーバは一致するものを見つけ、変数を読み込みます。 $_SESSION superglobal で利用可能になった変数を読み取ります。

PHPが一致するものを見つけない場合、新しいセッションを開始し、1~7の手順を繰り返します。

セッションはサーバーに保存されるので、機密情報を保存することができますが、ユーザーが、たとえば安全でないWiFiでログインした場合、セッションIDはまだ盗まれる可能性があることに注意してください。(攻撃者はクッキーを盗み見ることができ、それを自分のものとして設定することができます。)


これが要点です。どちらのテーマも、PHPのマニュアルで詳しく説明されています。