キャッシュとセキュリティとPHP

【この記事の所要時間 : 約 3 分

WEBブラウザはパフォーマンスを向上させるために、過去に入手した情報を再利用する機能(つまりキャッシュ機能)を持っている。
PHPでは、session.cache_limiterによりHTTPキャッシュのオプションを設定する。
通常、ブラウザのHTTPキャッシュオプションは「nocache」。
つまり、「キャッシュ無効」である。
キャッシュが無効であると、ブラウザの「戻る」ボタンをクリックしても前のページの内容がブラウザのキャッシュに残っていないため、表示されない。
これではユーザーが不便を感じることがある。
よってユーザーの利便性を向上させるために、WEBブラウザのみにキャッシュを許可するオプション「private」を利用する。
ただし、これは多少のリスクがあるのでそこは理解しないといけない。
どのようなリスクかというと、「セッション情報がWEBブラウザのキャッシュに残るということは同じPCやブラウザを共有するユーザーがいる場合、他のユーザーに重要な情報を盗まれる」というリスクである。
ただし、「public」というオプションを利用するよりはリスクは少ない。
publicを利用すると、WEBブラウザだけでなく、クライアントとサーバ間の途中にあるプロキシサーバやキャッシュサーバにデータが残り、第三者に重要な情報を盗まれるリスクがある。
そういう意味では、「private」のリスクは限定的だといえる。
private」では過去の日付が入ったExpiresヘッダ(キャッシュの有効期限を指定するところ)が送信される。
この際、あるWEBブラウザ(Mozillaの一部)では、ブラウザキャッシュが効かなくなるという問題が起こる可能性がある。これを回避するために、Expiresヘッダを送信しないオプション「private_no_expire」を指定する。
これらのHTTPキャッシュのオプションの設定は、session_start()の前に行う必要がある。
//クライアントのみにキャッシュを許可
session_cache_limiter(‘private’);
$cache_limiter = session_cache_limiter();
以下、参考までに。
セッションハイジャック と session_regenerate_id( )関数

いきなりはじめるPHP~ワクワク・ドキドキの入門教室~
谷藤賢一
リックテレコム
売り上げランキング: 6,047
スポンサーリンク
レクタングル(大)広告
  • このエントリーをはてなブックマークに追加
スポンサーリンク
レクタングル(大)広告

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です