99

Cookie とセッションを専門的に理解しようとしています。ブラウザがサーバーに接続すると、サーバーはブラウザに「phpsessid」を含むCookieをクライアントブラウザのCookieフォルダーに「貼り付ける」ように「要求」することを知っています。

「phpsessid」が得られたので、クライアントがサーバーに入ると、ブラウザーはサーバーに「phpsessid」を送信し、サーバーは tmp フォルダーを調べ、一致する場合は、ユーザーが持っているすべてのデータをロードします。このクライアントですが、私はそのプロセスにちょっと混乱しています。

セッションとクッキーを作成するプロセス、つまり舞台裏で何が起こっているのかを理解するのを手伝ってくれる人がいれば幸いです。

4

1 に答える 1

194

これを見てみましょう:

Cookieセッションはどちらも、ブラウザーが行うさまざまな要求の間でアプリケーションの状態を保持する方法です。たとえば、 StackOverflowでページをリクエストするたびにログインする必要がないのは、彼らのおかげです。

クッキー

Cookie は小さなデータ (最大 4KB の長さ) であり、キー = 値のペアでデータを保持します。

name=value; name2=value2

これらは、JavaScriptによって、またはHTTP ヘッダーを使用してサーバー経由で設定されます。

Cookie には有効期限が設定されています。たとえば、HTTP ヘッダーを使用します。

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

これにより、ブラウザはname2の値で名前が付けられた Cookie を設定しvalue2、約 9 年で有効期限が切れます。

Cookie は、ユーザーがそのコンテンツを簡単に操作できるため、非常に安全ではないと考えられています。そのため、常に Cookie データを検証する必要があります。Cookie から得られるものが必ずしも期待どおりであると仮定しないでください。

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

Cookie は、セッションの作成にもよく使用されます。

セッション

セッションは少し異なります。各ユーザーはセッション IDを取得します。セッション ID は、 CookieまたはGET 変数による検証のためにサーバーに送り返されます。

セッションは通常、存続期間が短いため、アプリケーション間で一時的な状態を保存するのに理想的です。ユーザーがブラウザーを閉じると、セッションも期限切れになります。

変数自体がサーバー上に保持されるため、セッションは Cookie よりも安全であると見なされます。仕組みは次のとおりです。

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

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

機密情報はサーバーに保持されるため、セッションに保存できますが、ユーザーが安全でない WiFi 経由でログインした場合、セッション ID が盗まれる可能性があることに注意してください。(攻撃者は Cookie を盗聴し、それを独自のものとして設定できます。変数自体は表示されませんが、サーバーは攻撃者をユーザーとして識別します)。


それが要点です。どちらのテーマについても、PHP のマニュアルで詳しく学ぶことができます。

于 2012-06-21T17:11:16.817 に答える