概要
| 脆弱性名(Ja) | 「Cache-Control」ヘッダーがありません | 
| 脆弱性名(En) | Missing ‘Cache-Control’ Header | 
| ID | 112553 | 
| 危険度 | Low | 
| ファミリー | HTTP Security Header | 
説明
「Cache-Control」ヘッダーは、ブラウザやサーバー間でのキャッシュの制御を行うHTTPヘッダーです。サーバーがブラウザに対して、ページやデータの保存方法を指示します。このヘッダーにより、ページがキャッシュされる期間や条件を指定できます。
リスク
キャッシュされた情報には、機密データや個人情報が含まれる可能性があり、他のユーザーが同じデバイスを使った場合、その情報にアクセスできてしまう危険性があります。
特に共有端末や公共のコンピュータでは大きなリスクとなり得ります。
検出トリガー
- HTTPレスポンスヘッダーに「Cache-Control」が含まれていない。
 - 「Cache-Control」ヘッダーが適切な設定がされていない
- Cache-Control: nostore
 - Pragma: no-cache
 
 
対策
案1: .Cache-Controlヘッダーの追加
サーバーのレスポンスに「Cache-Control: no-store」を追加し、ブラウザにデータをキャッシュさせないようにします。
これにより、ページを開いた後、ブラウザがそのページの情報を保存しないように制御できます。
Apacheのサーバーでは、.htaccessファイルに以下の設定を追加します:
<IfModule mod_headers.c>
  Header set Cache-Control "no-store, no-cache, must-revalidate"
  Header set Pragma "no-cache"
</IfModule>
Nginxでは、nginx.confファイルに以下の設定を追加します:
location / {
  add_header Cache-Control "no-store, no-cache, must-revalidate";
  add_header Pragma "no-cache";
}
案2.ブラウザキャッシュの無効化
NginxとApacheともに「Expires」ヘッダーを使用し、キャッシュ期限を0設定することも効果的です。
Apacheの場合:
ExpiresActive On
ExpiresByType text/html "access plus 0 seconds"
nginxの場合:
expires -1;
設定を反映させることで、キャッシュが即座に無効になります。
関連リンク
危険度が脆弱性ツールによって異なる場合があります。