Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
8
Help us understand the problem. What is going on with this article?
@koseki

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

More than 3 years have 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 ヘッダ用に別のディレクティブを作るべきなのでは、と思います。

8
Help us understand the problem. What is going on with this article?
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.
Sign Up
If you already have a Qiita account Login
8
Help us understand the problem. What is going on with this article?