公開日:2007年6月28日
独立行政法人情報処理推進機構
セキュリティセンター
本ページの情報は2007年6月時点のものです。
記載の資料は資料公開当時のもので、現在は公開されていないものも含みます。
ブラウザとWebサーバの間には、いくつかのキャッシュメカニズムが働いていることが多い。
これらのキャッシュメカニズムは、ブラウザからのリクエストによって得られたコンテンツをキャッシュに保持しておき、同じURLのリクエストが生じたとき、本来のWebサーバにコンテンツを取りに行かず、キャッシュの内容をブラウザに渡すものである。 このようにキャッシュは、円滑なインターネットの利用に寄与してくれる。 しかし、コンテンツによっては、ただひとりのユーザのみが呼び出せるものでなければならない場合がある。 もしも誰かのプライベートなコンテンツがキャッシュに記録されていて、それを他人が呼び出すことができれば情報漏えい問題になる。
HTTP/1.1 にはこの問題に対処するための Cache-Control ヘッダが用意されている。次のような Cache-Control ヘッダをHTTPレスポンスに記述することによって、Webアプリケーションからブラウザに送るコンテンツが、途中の経路上でむやみにキャッシュに記録されたり再利用されたりしないように、プロキシサーバやキャッシュサーバに指示するというものである。
これらのヘッダを適宜取捨選択して使用することになるが、これらをすべて指定して次のようにしても構わない。 Cache-Control: private, no-store, no-cache, must-revalidate
Webサーバとブラウザの通信経路上に存在するプロキシサーバやキャッシュサーバをすべてWebサーバ側で把握することは困難である。場合によっては、古い設備が存在し、HTTP/1.1 の Cache-Control ヘッダを解さないプロキシが存在するかもしれない。 このような心配のある場合は次のヘッダをHTTPレスポンスに含めると、相手のプロキシが対応してくれる場合もある。 Pragma: no-cache ただし、この方法が常に有効であるという保証はない。