Help us understand the problem. What is going on with this article?

Nginx プロキシキャッシュでクッキーがついていてもキャッシュするには

More than 1 year has passed since last update.

なにが危険か

Nginx のプロキシキャッシュで、レスポンスにクッキーが含まれていてキャッシュされない場合、

proxy_ignore_headers Set-Cookie;

を設定すればよい、というような説明が多く見られるのですが、これはプロキシキャッシュに Set-Cookie ヘッダを無視させる設定ではありません

これは見た目に反して、クッキー込みでキャッシュする設定です。

キャッシュにより、他人のクッキーが漏れます。例えばセッション ID が漏洩します。

対策

proxy_hide_header Set-Cookie; を一緒に指定します。

proxy_ignore_headers Set-Cookie;
proxy_hide_header Set-Cookie;

参考記事

なかなかにヤバい話だと思うんですが、あまり記事が見つかりません。

に、元の回答者とは別の方が後から追記しています。

This is important to avoid leaking cookies via the NGINX cache.

なぜこんなことになっているのか?

proxy_ignore_headers は、レスポンスヘッダの処理を止めるディレクティブです。

例えば、レスポンスの Cache-Control ヘッダを無視するために使います。

レスポンスに Set-Cookie ヘッダがついている場合、デフォルトだと「キャッシュを止める」という処理を行います。

この処理を無効にする、つまりSet-Cookie がついていてもキャッシュする」のが、proxy_ignore_headers Set-Cookie; の効果です。

でも、この字面から受け取れる意味は、どう見ても Set-Cookie ヘッダを無視するというものです。Nginx は、Set-Cookie ヘッダ用に別のディレクティブを作るべきなのでは、と思います。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした