質問: こんにちは。 国内数百万会員の統括エンジニア独白について質問させてください。 > > CDNは大量のアクセスに耐えるための負荷分散装置としても使われます。我々のサービスでも、本来はCDNに向かない"中身がコロコロ変わる情報"を、負荷分散のためにキャッシュを無効にしてCDNに置いていたりします。 > > > この辺りは理解(賛同)できるのですが > > 物理的なファイルという形で同じファイル名を使っているのだとすれば、それは設計上の問題です。 > > > この辺りは理解できません。同じファイル名って設計上問題なのでしょうか? 本記事に賛同されている方もいらっしゃるようですし、これを教訓にしたいと思っております。 まだまだ勉強不足の若輩者ですが、よろしくお願いいたします。
回答: ファイル名が同じか違うかだけでは、 必ずしもキャッシュにまつわるセキュリティレベルは改善しません。 確かに hoge.com/myuser/{userid} とすれば、 (hoge.com/myuser/show.cgi?uid={userid} でもいい) 自分の情報を見ようとした人が誤って他人の情報を見てしまうリスクは避けられるかもしれませんが、 意図的に他人のuseridを指定してみるような人には見えてしまいます。 もちろん、hoge.com/myuser/{sessionid} としておき、 セッションの有効期間よりもキャッシュの有効期間が短くなっていれば、 意図的に他人の情報を見ようとする人に対しても有効に機能しますが、 今度はRefererからセッションIDが読み取られ、 例えばblogでアクセスログをチェックしてる人がRefererのアドレスを開いたら、 個人情報が見えちゃったなんてことにもなりかねません。 サイト外へのリンクは必ずリダイレクトページを経由するようになっていれば問題ありませんが、 それでも例えばホテルの共有PCからアクセスしたらどうでしょう? ブラウザを閉じてもアクセス履歴が残るかもしれないので、次の利用者が覗くことも可能ですね。 (ネットカフェなどは都度設定がリセットされ、履歴も綺麗に消えますが) なので、URLを一人別にすることが解決策のひとつと思ってしまうのは、 逆に新たなリスクを生むので、 やはり基本はno-cacheですよね。 私は、設計段階で、個人情報を扱う部分とそうでない部分を分けていない事が、 一番の原因じゃないかと思います。 (開発途中での設計変更が、個人情報を扱う部分にも影響してしまう)