対象の訪問者間で共有が許可されたレスポンスだけをキャッシュします。公開の商品説明とログイン済み顧客のアカウントページでは要件が異なります。
漏えいが起きる仕組み
Aliceが/accountを要求し、NginxがそのURLをキーにレスポンスを保存するとします。後からBobが同じキャッシュを受け取ると、Aliceのデータが見えてしまいます。非公開の結果に共有キャッシュを使ったことが問題です。
明示的に公開されたルートから始めます。保存レスポンスを識別するキャッシュキーは、ホスト、パス、クエリ、言語など、関係する違いを区別する必要があります。
非公開ルートでは読み取りと保存の両方を制御する
ほかの場所ではproxy cacheが設定されているserver内で、専用の非公開locationに次を置けます。
nginx
location /account/ {
proxy_pass http://127.0.0.1:3000;
proxy_cache_bypass 1;
proxy_no_cache 1;
}
は共有キャッシュからの読み取りを防ぎます。は新しいレスポンスの保存を防ぎます。この例が保護するのはプレフィックスです。ほかの非公開ルートや競合するlocationも監査します。
