1. ホーム
  2. php

[解決済み】クッキーとセッションの比較

2022-04-09 06:59:42

質問

数ヶ月前にPHPを使い始めました。自分のサイトのログインシステムを作るために、クッキーとセッションとその違いについて読みました(クッキーはユーザーのブラウザに保存され、セッションはサーバーに保存されます)。その時、私はクッキーを好み(クッキーを嫌いな人はいないでしょう!)、ただこう言いました: "誰が気にするの?サーバーに保存してもいいことないし"と、そのまま学士の卒業制作でクッキーを使いました。しかし、私のアプリの大部分を作った後、ユーザーのIDを保存する特別なケースでは、セッションの方がより適切であると聞きました。そこで私は、審査員から「なぜセッションではなくクッキーを使ったのですか」と聞かれたら、何と答えようかと考え始めました。私はそのような理由(ユーザーに関する内部情報を保存する必要がないこと)だけです。それでいいのでしょうか? 理由として それともそれ以上なのか?

ユーザーIDを保持するためにクッキーを使用することのメリット・デメリットを教えてください。

StackOverflowの皆さん、ありがとうございました。

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

コンセプトは、ウェブ訪問者のためにページロードにわたって永続的なデータを保存することです。 クッキーは、それを直接クライアント上に保存します。 セッションは、クッキーを一種のキーとして使用し、サーバー側に保存されるデータと関連付けます。

セッションを使用すると、実際の値がクライアントから隠され、データの有効期限が切れて無効になるタイミングを制御できるため、好ましいとされています。 もし、すべてがクッキーに基づくものであれば、ユーザー(またはハッカー)はクッキーのデータを操作して、あなたのサイトへのリクエストを弾くことができます。

編集部:クッキーを使うメリットは、シンプルであること以外にはないと思うのですが。 こう考えてみてください...。ユーザーは自分のIDナンバーを知る理由があるのでしょうか? 一般的に、私は「いいえ」と言うでしょう、ユーザーはこの情報を必要としません。 情報を提供することは、知る必要がある場合に限られるべきです。 もしユーザーがクッキーを変更して別のIDを持つようになったら、アプリケーションはどう対応するのでしょうか? それはセキュリティリスクです。

セッションが流行る前、私は基本的に独自の実装をしていました。 クライアントで一意のクッキーの値を保存し、そのクッキーの値と一緒にデータベースに永続的なデータを保存していました。 そして、ページ・リクエストの際にこれらの値を照合し、クライアントにはそれが何であるかを制御させることなく、私の永続的なデータを持たせました。