ホームページ  >  記事  >  バックエンド開発  >  PHP では、Cookie とセッションの違いは何ですか?また、それらを使用する利点は何ですか? (Baidu ではなく、答えてください。ありがとうございます)。

PHP では、Cookie とセッションの違いは何ですか?また、それらを使用する利点は何ですか? (Baidu ではなく、答えてください。ありがとうございます)。

WBOY
WBOYオリジナル
2016-09-30 09:24:12988ブラウズ

返信内容:

PHP のセッションと Cookie については話さないで、通常の Web におけるセッションと Cookie について見てみましょう。

Cookieは実際にはブラウザ側のテクノロジーです。 HTTP 自体はステートレスであるため、サーバーは毎回誰がリクエストしているのかを知りません。そのため、Web セッションでは、HTTP ヘッダーの set-cookie を通じて一部のコンテンツをクライアントに一時的に保存することができます。このセッションには、現在の Cookie の内容が伴います (Cookie が無効になっている場合は送信されません)。ここでのセッションは通常、ドメイン名によって定義されます。

しかし、Cookie には 2 つの大きな欠陥があります: 1. Cookie はクライアント側に保存されるため、Cookie が読み取られ、悪用され、変更される可能性があります。これは、ログイン情報などの重要な情報が Cookie を使用して保存されている場合、他の人がその情報を自由に読み取り、削除、変更できることを意味します。 2. 他の偽装サイトがあなたの Cookie コンテンツを直接取得できる可能性があります。

それでは、クライアントが自由に Cookie を削除したり、他のユーザーを偽装したりするのを困難にするために、この情報にアクセスするにはどうすればよいでしょうか?一般的に、方法には 2 つの主要なカテゴリがあります: 1. Cookie を暗号化する; 2. 自己検証付きの署名のみを Cookie に保存し、鍵データをサーバー側に保存します。これがセッションです。

セッションはCookieのアプリケーションです。クライアントに保存されるセッションの暗号化は実装が最も簡単で、多くの新しいマイクロフレームワークのセッションはこの方法で実装されます (サーバーには保存されません)。 2 つ目は、サーバーに保存する方法です。オプションの保存場所には、メモリ、ファイル、外部データベースなどが含まれますが、これらに限定されません。

Phpには独自のライブラリが付属しています。Cookieはクライアント側で保存する必要があるCookieをレスポンスに追加し、セッションIDをCookieに追加してサーバーに保存する必要があるものを保存します。デフォルトではファイル形式で保存されます。

ちなみに、最新のブラウザは一般に localStorage をサポートしています。第一に、フロントエンドからはアクセスできますが、ユーザーにとっては若干安全です。第二に、ストレージの量がはるかに大きくなります。ローエンド クローラーのある程度の防止機能。古いブラウザとの互換性を考慮する必要がない場合は、localStorage + フロントエンドとバックエンドの分離を使用し、Cookie を置き換えるために ajax 形式の js を通じて localStorage コンテンツ (session_id または暗号化されたストレージ コンテンツ) を返すことをお勧めします。 。 Cookie はクライアント側にデータを保存するもので、セッションはサーバー側にデータを保存するものです。 一階はよく言いました。
実際、最大の違いは、Cookie がクライアント側に存在し、セッションがサーバー側に存在することです。一般に、セッションは Cookie 内のセッション ID に依存します。実際、セッション ID を自分で設定し、セッションを使用するときにセッション ID を指定することもできます。セッション ID の機能は、セッションに保存されているファイルを指定することなので、Cookie が無効になった後でもこのトリックを使用できます。
もう 1 つ追加すべき点は、セッション データが失われる可能性があるため、セッションをキャッシュまたはデータベースに保存するようにセッションを書き換えることもできるため、セッションは注意して使用する必要があるということです。 このように理解できます。クッキーは他人のボックスであり、セッションは自分のボックスです。ボックスの利点は何ですか?何かを保存する
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。