目次
ブラウザキャッシュとは
ブラウザはページの表示速度を向上させるため、取得したページを一時的に保存する仕組みを持っています。これをブラウザキャッシュと呼びます。
キャッシュが有効な場合、同じページを再度表示する際にサーバーへリクエストを送らず、ブラウザ内に保存されたデータを利用して表示することがあります。
この仕組みによりページ表示は高速になりますが、Webアプリケーションでは意図しない動作を引き起こすことがあります。
ログアウト後にブラウザバックで画面が表示される問題
キャッシュ制御が適切に行われていない場合、ログアウト後でもブラウザバックによってログイン後の画面が表示されることがあります。
例えば次のようなケースです。
1. ユーザーがログインする
2. マイページなどの画面を閲覧する
3. ログアウトする
4. ブラウザバックを押す
このとき、ログイン後のページがそのまま表示されてしまう場合は、キャッシュ制御が正しく行われていない可能性があります。
機密情報を含む画面では、この挙動は情報漏洩のリスクにつながります。
フォーム再送信の問題
キャッシュ制御が不適切な場合、フォーム送信後にブラウザバックをすると、送信前のフォーム画面が再表示されることがあります。
その結果、ユーザーが再度送信ボタンを押してしまい、次のような問題が発生する可能性があります。
・注文の二重送信
・データの重複登録
・意図しない処理の再実行
このような問題を防ぐためにも、フォーム送信後の画面遷移やキャッシュ制御を適切に設計する必要があります。
Cache-Controlヘッダによるキャッシュ制御
ブラウザキャッシュを制御するためには、HTTPレスポンスヘッダのCache-Controlを適切に設定することが重要です。
例えば次のような設定があります。
no-store // キャッシュを保存しない
no-cache // 再検証を必須にする
private // ユーザー専用キャッシュ
ログイン後の画面や個人情報を扱うページでは、キャッシュを保存しない設定を行うことで、ブラウザバックによる情報表示を防ぐことができます。
Cache-Controlヘッダが設定されているか確認する手順
キャッシュ制御が適切に設定されているかは、ブラウザの開発者ツール(DevTools)で確認することができます。
確認手順
確認するポイント
ログイン後の画面や個人情報を扱うページでは、次のような設定になっていることが望ましいです。
Cache-Control: no-store
または
Cache-Control: no-cache, no-store, must-revalidate
このような設定があることで、ブラウザがページをキャッシュとして保存することを防ぐことができます。
テスト時のチェックポイント
・ログイン後ページでCache-Controlが設定されているか
・ログアウト後にブラウザバックしても画面が表示されないか
・個人情報ページでキャッシュが保存されない設定になっているか
キャッシュ制御は見落とされやすい部分ですが、設定を忘れるとログアウト後の画面表示や情報漏洩の原因になります。システムテストでは、ブラウザバックの挙動だけでなくHTTPレスポンスヘッダのCache-Control設定も必ず確認することが重要です。
JavaScriptイベントによる制御
状況によっては、JavaScriptのイベントを利用してページ遷移時の処理を行うこともあります。
onunload
onbeforeunload
これらのイベントを利用することで、ページ離脱時の処理や再読み込み時の挙動を制御することができます。
まとめ
システムテストでは、ブラウザバックとキャッシュ制御について次のポイントを確認します。
1. ログアウト後にブラウザバックで画面が表示されないか
2. フォーム送信後にブラウザバックで再送信できないか
3. Cache-Controlヘッダが適切に設定されているか
ブラウザキャッシュは表示速度を向上させる便利な仕組みですが、制御を誤ると不具合や情報漏洩の原因になります。システムテストでは、ブラウザバック時の挙動も含めてキャッシュ制御が適切に行われているかを確認することが重要です。