LoginSignup
0
0

More than 3 years have passed since last update.

備忘録:「cookie & セッション」

Last updated at Posted at 2020-01-14

webサーバーとブラウザ間には、物理的な接続状態は存在しない。
一回のみのデータのリクエスト・レスポンスしかHTTPには存在しない
[]https://ips.nekotype.com/2441/
1.Cookie とセッションの違い
ID・パスワード等、別の画面に偏移しても必要なデータ、その場合に使用されるのが、
Cookieやセッション。

・Cookie=webサーバーが発行、ブラウザが保持するキーと値
ブラウザは同じサイトにアクセスする際にはそのCookieをWeb サーバーに送信
webサーバーはブラウザからのリクエスト毎にその値を参照する事が可能

・セッション=webサーバーで保持するキー
IDやパスワードなどを毎回ブラウザから送信してはセキュリティ的にも問題
ログインアクションにより、webサーバー側ではセッションとして値を保持し、
ブラウザへはCookieを送信する。

ブラウザから再度アクセスがあれば、送信されたCookie情報を元にwebサーバーは
対応するセッション情報があるかを判断。

重要:Cookie=ブラウザに保存される セッション=webサーバーに保存される
キーと値を持つデータ(=ファイル)

2.CookieとセッションCookieの違い

Cookie=ファイルとして保存しているので容易に参照可能。
 
セッションCookie=ブラウザに保存
 然し、ファイルではなく、メモリーに保持している。
 そのため、セッションCookieはブラウザを閉じれば破棄される。
Cookieも有効期限はあるが、ブラウザを閉じてもなくならない。

一度ブラウザを閉じれば再度ログイン画面に戻る、といった動きに使用できる。

3.確認方法
Cookie:
 XP:\Documents and Settings(ユーザー名)\Cookies
 Vista:C:\Users(ユーザー名)\AppData\Roaming\Microsoft\Windows\Cookies
 等…

セッションCookie:
 

javascript:document.cookie;

と入力。
そのサイトでセッションCookieを使用していれば確認可能。
ただし、CookieかセッションCookieかの判別は簡単にはにできない。
Cookieファイルにない情報が送信されていれば、それがセッションCookie
... :x001:

セッション:
 サーバー側にあるので開発者しか分からない。
phpの場合、デフォルトで
/var/lib/php/session
にファイルとして保存されている。

4.その他

セッション情報はサーバーにファイルとして保存されてしまう。
〜複数のwebサーバーで負荷分散している場合、別のwebサーバーにアクセスすれば
セッションは無い。
ロードバランサーで負荷分散している場合、注意が必要。

いち解決策、それぞれのwebサーバーにセッション情報を保存するのでなく、
データベースにセッション情報をもつということが考えられる。

ブラウザを閉じた場合、再訴ログイン画面に戻すことはセッションCookieで実現可能。

戻るボタンを押下した場合、エラーや不正なページ偏移として処理するには
ブラウザのキャッシュをOFFにする

[]参考:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0