web-dev-qa-db-ja.com

Cookieとセッション

数か月前にPHPを使い始めました。 Webサイトのログインシステムを作成するために、Cookieとセッション、およびそれらの違いについて説明します(Cookieはユーザーのブラウザーとサーバー上のセッションに保存されます)。当時、私はクッキーを好み(そしてクッキーが嫌いな人は!?)、「誰が気にしますか?私はそれを私のサーバーに保存するのに何の対処もしていません」と言ったので、私の学士卒業プロジェクト。ただし、アプリの大部分を実行した後、ユーザーIDを保存する特定のケースでは、セッションがより適切であると聞きました。それで、セッションの代わりにクッキーを使用した理由をwhy審員が私に尋ねた場合、私は何を言うのか考え始めましたか?その理由があります(ユーザーに関する情報を内部に保存する必要はありません)。それで十分ですか理由として?それともそれ以上ですか?
ユーザーIDを保持するためにCookieを使用するメリット/デメリットについて教えてください。

StackOverflowをご利用いただきありがとうございます。

164
Nadjib Mami

概念は、Webビジターのページロード全体に永続データを保存することです。クッキーはクライアントに直接保存します。セッションは、Cookieを一種のキーとして使用して、サーバー側に保存されているデータに関連付けます。

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

編集:単純さ以外に、Cookieを使用する利点はないと思います。このように見てください...ユーザーは自分のID番号を知る理由がありますか?通常、ユーザーはこの情報を必要としません。情報の提供は、知る必要性に基づいて制限する必要があります。ユーザーが別のIDを持つようにCookieを変更した場合、アプリケーションはどのように応答しますか?これはセキュリティ上のリスクです。

セッションが大流行する前は、基本的に自分で実装していました。一意のCookie値をクライアントに保存し、そのCookie値とともに永続データをデータベースに保存しました。次に、ページリクエストでこれらの値を照合し、クライアントにそれを制御させずに永続データを取得しました。

199
Fosco

これら2つを区別するための基本的なアイデア。

セッション:

  1. IDUはサーバー(つまりサーバー側)に保存されます
  2. より安全(1のため)
  3. 有効期限は設定できません。ユーザーがブラウザを閉じると、セッション変数は期限切れになります。 (最近では、PHPのデフォルトとして24分間保存されます)

Cookies:

  1. IDUはWebブラウザー(つまり、クライアント側)に保存されます
  2. ハッカーがあなたの情報にアクセスして情報を取得できるため(1のため)、あまり安全ではありません。
  3. 有効期限を設定できます(詳細については setcookies() を参照)

セッションは、計算、測定、クエリなどの変数などの短期的な情報/値を保存する必要がある場合に適しています。

Cookieは、ユーザーのアカウントなどの長期的な情報/値を保存する必要がある場合に適しています(2日間コンピューターをシャットダウンしても、アカウントは引き続きログインします)。 Cookieはほとんどの状況で採用されていないため、Cookieの多くの例を考えることはできません。

109
user743234
SESSIONS ENDS WHEN USER CLOSES THEIR BROWSER,

COOKIES END DEPENDING ON THE LIFETIME YOU SET FOR IT. SO THEY CAN LAST FOR YEARS

これが選択の大きな違いです。

IDを長期間記憶しておくには、Cookieを使用する必要があります。それ以外の場合、この訪問でのみWebサイトにユーザーを認識させたい場合は、セッションが最適です。

セッションは、PHPサーバーが生成するファイルに保存されます。どのファイルがどのユーザーのものであるかを記憶するために、phpはこのセッションファイルIDを保持するcookieをユーザーのブラウザーに設定し、次回のアクセス時にphpがこのファイルを読み取り、セッションをリロードします。

Phpはデフォルトで間隔ごとにセッションをクリアし、セッションの命名規則によりセッションが自動的に期限切れになるようになりました。また、ブラウザが閉じられるか、履歴がクリアされると、ブラウザはセッションIDを保持するCookieを保持しません。

最近のブラウザーは、LocalStorage、SessionStorage、その他のwebdbエンジンなどの別の種類のストレージエンジンもサポートしていることに注意してください。javascriptコードはコンピューターにデータを保存してユーザーを記憶します。たとえば、Facebook内でJavaScriptコンソールを開き、「localStorage」と入力すると、CookieなしでFacebookがユーザーを記憶するために使用するすべての変数が表示されます。

40
Zalaboza

ログインしたユーザーを認識するために#IDをCookieとして保存すると、実際にはユーザーに関係のないデータがユーザーに表示されます。さらに、サードパーティがブラウザでランダムIDをCookieデータとして設定しようとすると、実際にはそうではないのにユーザーであるとサーバーに確信させることができます。それはセキュリティの欠如です。

あなたはクッキーを使用しました、そしてあなたが言ったように、あなたはすでにプロジェクトのほとんどを完了しました。 cookieに加えて、セッションがより迅速に終了する一方で、長期間残る特権があります。したがって、この場合、セッションは適切ではありません。現実には、多くの有名で人気のあるWebサイトやサービスがCookieを使用しており、長時間ログインしたままにできます。しかし、彼らの方法を使用してより安全なログインプロセスを作成するにはどうすればよいですか?

これがアイデアです:Cookieの使用方法を支援できます:ログインユーザーを認識するためにIDの代わりにランダムキーを使用する場合、まず、プライマリデータをランダムユーザーに漏らさないでください。キーが十分に大きい場合、誰でもキーを推測したり、ランダムなキーを作成したりするのが難しくなります。たとえば、ユーザーのブラウザで次のような40の長さのキーを保存できます:「KUYTYRFU7987gJHFJ543JHBJHCF5645UYTUYJH54657jguthfn」.

19
Makan Tayebi

実際、セッションとCookieは必ずしも別個のものではありません。多くの場合、常にではありませんが、セッションはCookieを使用します。

これらの他の質問には、あなたの質問に対する良い答えがいくつかあります。あなたの質問はユーザーのIDU(またはID)の保存に関するものであるため、他の質問とまったく重複しているとは思いませんが、回答が役に立つでしょう。

Cookieとセッション

キャッシュVSセッションVSクッキー?

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

12
DOK

私は個人的にクッキーとセッションの両方を使用しています。

Cookieは、ユーザーが"remember me"チェックボックスをクリックしたときにのみ使用されます。また、サーバー上のCookieは暗号化およびデータのみ復号化です。誰かがCookieを編集しようとすると、解読者はそれを検出してリクエストを拒否できます。

ログイン情報がcookiesに保存されているである非常に多くのサイトを見てきましたが、cookie内のユーザーのIDとユーザー名をanyoneアカウントにアクセスする

おかげで、

8

セッションとCookieは同じではありません。

セッションは、Webページからの情報を保存するために使用されます。通常、ウェブページにはこれらの情報を保存する記憶がありません。ただし、使用すると必要な情報を保存できます。

ただし、Cookieはユーザーの識別に使用されます。 Cookieを使用して、データを保存できます。これは、ユーザーのWebブラウザーに保存されるデータのごく一部です。そのため、ユーザーが次回ブラウザを参照するたびに、前のアクティビティを取得するために、Cookieデータ情報がサーバーに返送されます。

クレジット: セッションとクッキー

2
user3824494

セッションを使用すると、Cookieと同様に個々の情報を保存できますが、データはクライアントではなくサーバーに保存されます。

1
Fahad Uddin

セッションは、Cookie情報に関連付けられているサーバー上の情報のグループです。 PHPを使用している場合は、セッションを確認できます。パスの場所を保存して、実際に「セッションを見る」。 Cookieは、クライアントとの間で送受信されるデータのスニペットです。 Cookieは、どのクライアントがどのセッションを処理したかをサーバーに伝えるため、セッションを容易にするためによく使用されます。これを行う方法は他にもあります(クエリ文字列のマジックなど)が、Cookieが最も一般的です。

0
Megersa

[セッション]を選択します。まず、セッションはCookieよりも安全です。Cookieはクライアントサイトデータであり、セッションはサーバーサイトデータです。 Cookieはユーザーのコンピューターブラウザーにサーバーに埋め込まれている小さなコードであるため、ユーザーを識別するために使用されます。一方、HTTPアドレスは192.168.0.1を765487cf34ert8ded…..またはGETとPOSTの助けを借りて状態を変更するため、Webサーバーはあなたが誰であるかを知らないため、セッションはIDを保護するのに役立ちます。メソッド。セッションは、ユーザーIDでさえ一致しない一意のIDセッションにユーザーのデータを保存します。セッションは、1つのアプリケーションのすべてのページに単一のユーザー情報を保存します。 Cookieの有効期限はsetcookies()を使用して設定されますが、セッションの有効期限は設定されず、ユーザーがブラウザーをオフにすると有効期限が切れます。

0

他の人が言ったように、セッションは賢く、クライアントから情報を隠すという利点があります。

ただし、Cookieには少なくとも1つの利点があり、JavaScriptからCookieにアクセスできます(たとえば ngCookies )。 PHPセッションを使用すると、PHPスクリプト以外の場所にはアクセスできません。

0
Kamalakannan J