ホームページ  >  記事  >  バックエンド開発  >  Cookie とセッションの関係と違いは何ですか?

Cookie とセッションの関係と違いは何ですか?

一个新手
一个新手オリジナル
2017-09-09 13:40:114157ブラウズ

httpプロトコルはステートレスですが、オンラインショッピングなど、多くのアプリケーションではサーバーがクライアントのステータスを把握する必要があります。このとき、Cookieとセッションが役割を果たします

Cookieとセッションの違いと関係

。 cookieメカニズムではクライアントで状態を維持するソリューションが採用されていますが、sessionメカニズムではサーバーで状態を維持するソリューションが採用されていますが、サーバー側で状態を維持するソリューションも必要です。 ID をクライアントに保存するため、セッション メカニズム ID を保存するという目的を達成するには Cookie メカニズムに頼る必要があるかもしれませんが、実際には他のオプションがあります

Cookie メカニズム

  • Cookie テクノロジー
    セッション追跡のためにユーザーのローカル端末に保存されるデータ (通常は暗号化されます)

  • Cookie コンポーネント

    1. http 応答メッセージの Cookie ヘッダー行
    2. http 要求メッセージの Cookie ヘッダー行
    3.クライアントホストに保存されたファイルはブラウザによって管理されます
    4. Webサーバー側のバックエンドデータベース

  • Cookieの原理
    Cookie とセッションの関係と違いは何ですか?

Cookieの配布はhttpプロトコルを拡張することで実現され、サーバーはAddを渡しますhttp 応答ヘッダーに特別な命令行を追加して、ブラウザーに命令に従って対応する Cookie を生成するよう促しますが、注意すべきことが 1 つあります。 JavaScript や vbscript などの純粋なクライアント側スクリプトも Cookie を生成する可能性があるため、潜在的なセキュリティ リスクが存在します。

Cookieの使用は、特定の原則に従ってブラウザによってバックグラウンドでサーバーに自動的に送信されます。ブラウザはすべての Cookie をチェックします。宣言された Cookie の範囲が要求されるリソースの場所よりも大きい場合、Cookie は要求されたリソースの HTTP ヘッダーに添付され、Cookie の内容が主にサーバーに送信されます。 : 名前、値、有効期限、パスとドメイン、パスとドメインの組み合わせが Cookie のスコープを構成します。有効期限が設定されていない場合、この Cookie のライフサイクルはブラウザ ウィンドウのセッション中であることを意味します。閉じるとクッキーは消えます。ライフサイクルがセッションであるこのタイプの Cookie は、セッション Cookie と呼ばれます。セッション Cookie は通常、ハードディスクには保存されず、メモリに保存されます。有効期限が設定されている場合、ブラウザを閉じて再度開いた後も、ハード ディスクに保存されている Cookie は使用できるようになるまで有効です。異なるブラウザープロセスの共有

セッションメカニズム

WEB 開発では、サーバーはユーザーのブラウザーごとにセッション オブジェクト (セッション オブジェクト) を作成できます。 注: 1 つのブラウザーが 1 つのセッション オブジェクトを排他的に所有します。したがって、ユーザー データを保存する必要がある場合、サーバー プログラムはユーザーのブラウザ専用のセッションにユーザー データを書き込むことができ、ユーザーがブラウザを使用して他のプログラムにアクセスすると、他のプログラムがユーザーのセッションからユーザー データを取得できます。ユーザーサービス。

セッションはサーバー側のメカニズムであり、サーバーはハッシュ テーブルに似た構造を使用して情報を保存します。プログラムがクライアントのリクエストに対してセッションを作成する必要がある場合、サーバーはまずクライアントのリクエストにすでにセッションが含まれているかどうかを確認します。 ID (セッション ID と呼ばれます)。

これが含まれている場合、サーバーはセッション ID に従ってこのセッションを取得し、取得できない場合は新しいセッションを作成することを意味します。

クライアントのリクエストにセッション ID が含まれていない場合は、クライアントのセッションを作成し、このセッションに関連付けられたセッション ID の値を、簡単に偽造できない一意で不規則な文字列にする必要があります。セッション ID は、この応答で保存するためにクライアントに返されます。

Cookie を使用してこのセッション ID を保存すると、対話プロセス中にブラウザーがルールに従ってこの ID をサーバーに自動的に送信できます。一般に、この Cookie の名前は SESSIONID に似ていますが、Cookie は人為的に無効にすることができるため、Cookie が無効になってもセッション ID をサーバーに送信できるようにするための他のメカニズムが必要です

一般的に使用されているテクノロジーは

と呼ばれますURL 書き換え

は、セッション ID を URL パスの末尾に直接追加することです。 隠しフィールドを作成すると呼ばれるテクニックもあります。つまり、サーバーはフォームを自動的に変更し、次のような隠しフィールドを追加して、フォームの送信時にセッション ID をサーバーに送信できるようにします。

<form name="testform" action="/xxx"> 
<input type="hidden" name="jsessionid" value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764"> 
<input type="text"> 
</form>

要約すると、違いは次のように要約できます。

    Cookieデータは顧客のブラウザに保存され、セッションデータはサーバーに保存されます
  • Cookieはあまり安全ではありません。他の人がローカルに保存されたCookieを分析してCookieのなりすましを行う可能性があるため、重要な情報を保存することをお勧めします。セッション内のログイン情報など、その他の情報を保持する必要がある場合は、Cookieに保存できます
  • セッションは、アクセス数が増加すると、一定期間サーバーに保存されます。サーバーパフォーマンスの向上
  • 1 つの Cookie によって保存されるデータは 4K を超えることはできません。多くのブラウザでは、サイトで保存できる Cookie は最大 20 個に制限されています

http プロトコルはステートレスですが、多くのアプリケーションではサーバーがクライアントのステータスを把握する必要があります。オンライン ショッピングなど、その場合は Cookie とセッションがその役割を果たします

以上がCookie とセッションの関係と違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。