概要
脆弱性名(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;
設定を反映させることで、キャッシュが即座に無効になります。
関連リンク
危険度が脆弱性ツールによって異なる場合があります。