[解決済み】クッキーとセッションの比較
質問
数ヶ月前にPHPを使い始めました。自分のサイトのログインシステムを作るために、クッキーとセッションとその違いについて読みました(クッキーはユーザーのブラウザに保存され、セッションはサーバーに保存されます)。その時、私はクッキーを好み(クッキーを嫌いな人はいないでしょう!)、ただこう言いました: "誰が気にするの?サーバーに保存してもいいことないし"と、そのまま学士の卒業制作でクッキーを使いました。しかし、私のアプリの大部分を作った後、ユーザーのIDを保存する特別なケースでは、セッションの方がより適切であると聞きました。そこで私は、審査員から「なぜセッションではなくクッキーを使ったのですか」と聞かれたら、何と答えようかと考え始めました。私はそのような理由(ユーザーに関する内部情報を保存する必要がないこと)だけです。それでいいのでしょうか?
理由として
それともそれ以上なのか?
ユーザーIDを保持するためにクッキーを使用することのメリット・デメリットを教えてください。
StackOverflowの皆さん、ありがとうございました。
どのように解決するのですか?
コンセプトは、ウェブ訪問者のためにページロードにわたって永続的なデータを保存することです。 クッキーは、それを直接クライアント上に保存します。 セッションは、クッキーを一種のキーとして使用し、サーバー側に保存されるデータと関連付けます。
セッションを使用すると、実際の値がクライアントから隠され、データの有効期限が切れて無効になるタイミングを制御できるため、好ましいとされています。 もし、すべてがクッキーに基づくものであれば、ユーザー(またはハッカー)はクッキーのデータを操作して、あなたのサイトへのリクエストを弾くことができます。
編集部:クッキーを使うメリットは、シンプルであること以外にはないと思うのですが。 こう考えてみてください...。ユーザーは自分のIDナンバーを知る理由があるのでしょうか? 一般的に、私は「いいえ」と言うでしょう、ユーザーはこの情報を必要としません。 情報を提供することは、知る必要がある場合に限られるべきです。 もしユーザーがクッキーを変更して別のIDを持つようになったら、アプリケーションはどう対応するのでしょうか? それはセキュリティリスクです。
セッションが流行る前、私は基本的に独自の実装をしていました。 クライアントで一意のクッキーの値を保存し、そのクッキーの値と一緒にデータベースに永続的なデータを保存していました。 そして、ページ・リクエストの際にこれらの値を照合し、クライアントにはそれが何であるかを制御させることなく、私の永続的なデータを持たせました。
関連
-
[解決済み】Chrome net::ERR_INCOMPLETE_CHUNKED_ENCODING エラーが発生しました。
-
[解決済み】PHP フェイタルエラー。未定義の関数mssql_connect()をコールしています。
-
[解決済み】chromeの「net : Failed to load resource: net::ERR_SPDY_PROTOCOL_ERROR" は何がおかしいのか?
-
[解決済み] ローカルストレージとCookieの比較
-
[解決済み] JSONウェブトークンの無効化
-
[解決済み] Internet ExplorerのIFRAMEでCookieがブロックされる/保存されない
-
[解決済み] セッションとは何ですか?どのように機能するのですか?
-
[解決済み] なぜCSRF防止トークンをクッキーに入れるのが一般的なのですか?
-
[解決済み】「ログインしたままにする」 - 最適な方法とは?
-
[解決済み】セッションは本当にRESTfulnessに違反するのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】予期せぬ例外。SQLSTATE[HY000] [1045] Access denied for user ****@'localhost' (using password: YES)
-
[解決済み】「セッションキャッシュリミッターを送信できません - ヘッダーはすでに送信されています」【重複】。
-
[解決済み】XAMPPのphpMyAdminで「設定にあるcontroluserの接続に失敗しました。
-
[解決済み】stdClassクラスのオブジェクトが文字列に変換されない。
-
[解決済み】「Fatal error: Class 'MySQLi' not found "を解決するには?
-
[解決済み】PHPからPythonスクリプトを実行する
-
phpのAllowed memory size of 134217728 bytes枯渇問題の解決法
-
MacでPHPを実行した際に、メモリサイズが134217728バイトも消費される問題の解決方法について
-
[解決済み] PHPの配列を別の配列にコピーする関数はありますか?
-
[解決済み] クッキーとセッションの違い?