読者です 読者をやめる 読者になる 読者になる

Tech memo

日々学んだ技術のびぼうろく

一から整理するクッキーとセッション

はじめに

クッキーとセッションっていっつもこんがってよくわかんなくなる。
で、いざ使おうとした時に毎回調べて納得してまた忘れる…の繰り返しなので
もう忘れないようにメモしておくことにした。

目次

スポンサーリンク

クッキー

  • WebサーバがHTTP ヘッダーに格納するデータ
  • クライアントのブラウザに保存される
  • よく保存されるデータ
    • 利用者の識別や属性に関する情報
    • 利用者が最後に訪れた日時
  • 保存しない方がいいデータ
    • ログイン情報などの改ざんされてはいけないデータ

クッキーはクライアント側に保存するデータのため、 容易に改ざんできてしまう。

そのため、ログイン情報など改ざんされてはいけないデータはクッキーではなくセッションを使う。

▼Request Header
:authority:webtools.yjhm214.com
:method:GET
:path:/
:scheme:https
accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
accept-encoding:gzip, deflate, sdch, br
accept-language:ja,en-US;q=0.8,en;q=0.6
cookie:XXX=xxx ← ブラウザに保存されているクッキー
upgrade-insecure-requests:1
user-agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
▼Response Header
cache-control:no-cache, private
content-encoding:gzip
content-type:text/html; charset=UTF-8
date:Mon, 17 Apr 2017 02:17:56 GMT
server:nginx
set-cookie:XXXXXX=xxxx; expires=Mon, 17-Apr-2017 04:17:56 GMT; Max-Age=7200; path=/ ← サーバで生成されてセットされたクッキー
status:200

セッション

  • サーバに保存するデータ。
  • それぞれのセッションはセッションID という識別子に紐づいている。
  • セッションを取り出すときはクライアントからセッションID送信する。
  • セッションIDはクッキーに保存する。
  • セッションはWebブラウザを閉じるまで保存される。
  • よく保存されるデータ
    • ログイン情報
    • ECサイトなどのカートに入れた商品情報

関連記事

www.yjhm214.com

スポンサーリンク

OPcache / APCu / APC を使えるPHPのバージョンとそれぞれの違い

概要

PHP の実行速度高速化のためにキャッシュを導入するとき、
OPcache, APCu, APC がそれぞれどの PHP のバージョンに対応しているのか、
それぞれがどういう機能なのかがいつもわからなくなるためメモ。

目次

スポンサーリンク

キャッシュエクステンションとPHPのバージョン

PHP5.4 以前 PHP5.5 以降
APC OPcache + APCu

それぞれの機能

Zend OPcache

オペコードキャッシュ(コンパイル後のコードをメモリに保存して再利用)

APCu

ユーザーキャッシュ(オブジェクトや変数をメモリに保存して、別のリクエストからそれを再利用)

APC

オペコードキャッシュ + ユーザーキャッシュ

PHPのバージョンによってキャッシュが異なる理由

APC のオペコードキャッシュ機能に深刻なバグがあり、PHP5.3の時点でPHPから削除された。 ↓ APC のオペコードキャシュ機能を削除し、ユーザキャッシュ機能だけを残した APCu がリリースされる。 オペコードキャッシュ機能は OPcache がカバーすることに。 ↓ その後、APC の安定板がリリースされたが PHP5.5には対応していない。 ↓ 結果、PHP5.5以降は OPcache + APCu となった。

関連記事

www.yjhm214.com

スポンサーリンク