cache-controlの設定でブラウザにどのように情報がキャッシュされるのかが曖昧だったのでまとめます。
Webアプリケーションにおいて、ブラウザ上に重要な情報をキャッシュされることは情報漏洩の問題につながります。
例えば、ログイン後のパスワード変更画面で新しいパスワードを入力し確認画面へ遷移するようなリクエストを送信すると、Webサーバからのレスポンスがきます。確認画面に新しいパスワードが表示されている場合、Webサーバからのレスポンスにはもちろん確認画面に表示されているパスワードが記載されているわけです。
レスポンスヘッダに正しくキャッシュを制限する記述が無ければブラウザのキャッシュに新しいパスワードの情報が残ってしまいます。キャッシュは誰でも確認できるためだいぶ危ないですね。
cache-control
「cache-control」を正しく設定するとレスポンスに含まれる情報をブラウザにキャッシュを禁ずることもできます。
基本的に以下の設定をしていればセキュリティ的には問題ありません。
cache-control:no-store
Pragma:no-cache
この設定ができているサイトはかなり少なめですね。サーバの設定をするだけなので簡単なのに!
cache-control:no-store
この設定は「キャッシュするな!」ってことで、レスポンス情報は一切ブラウザにキャッシュされません。
今回は「Pragma:no-cache」は深く触れませんが、簡単に言うと「cache-control」の補助的役割。
このほかにも「cache-control」には以下の設定があります。
1.Cache-Control: private
2.Cache-Control: no-cache
3.Cache-Control: must-revalidate
4.Cache-Control: max-age
実際に自分で実験する必要はありそうです。
実験した際に結果を追記します。
つづく