Quel est le risque d'avoir L'en-tête HTTP "Cache-Control: public"?

L'en-tête HTTP/1.1 Cache-Control peut spécifier max-age ainsi que si le contenu du cache peut être public ou privé, indiquant si le cache intermédiaire peut mettre en cache le contenu.

Par exemple, expires_in() de Ruby on Rails utilise par défaut Cache-Control: private

Quel est le risque de la rendre publique? S'il est public, quels endroits supplémentaires peuvent mettre en cache le contenu - serait-ce un serveur proxy, par exemple?

Que faire si le site est comme Amazon.com, mais l'utilisateur est anonyme, alors probablement là n'est pas beaucoup question de confidentialité? Que se passe-t-il si l'utilisateur est connecté, pourrait-il y avoir un problème de confidentialité, car les données passent par des endroits et les données sont visibles. Si cet emplacement veut être "mauvais", il n'a vraiment pas besoin de se soucier du Cache-Control: private de toute façon.

Que se passe-t-il si c'est un site Web où l'utilisateur peut être connecté, mais que le site web ne recherche que des produits de santé comme l'huile de poisson et les vitamines, etc. Dans ce cas, il y a encore moins de vie privée en cause parce qu'il est différent Amazon.com où il y a beaucoup plus de variété de produits tels que des livres pour lesquels un utilisateur peut vraiment se soucier plus de la question de la vie privée.

Cela dit, Quel est l'avantage supplémentaire De have Cache-Control: public?

37
demandé sur 太極者無極而生 2010-07-27 04:06:55

2 réponses

Le problème avec Cache-Control: Public est que la réponse peut être mise en cache et affichée à un utilisateur différent. Ceci est un problème si vous avez une application authentifiée qui affiche des données privées. En général, vous ne devez utiliser public que pour les pages statiques ou les pages qui renvoient les mêmes données, quel que soit l'utilisateur qui effectue la demande.

42
répondu Mike 2018-08-12 04:02:08

J'ai en outre trouvé la spécification suivante:

Http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.1

Public

Indique que la réponse peut être mis en cache par n'importe quel cache, même s'il le ferait normalement être non-cacheable ou cacheable uniquement dans un cache non partagé. (Voir aussi autorisation, section 14.8, pour des détails supplémentaires.)

Privé

Indique que l'ensemble ou une partie de la réponse message est destiné à un utilisateur unique et ne doit pas être mis en cache par un cache partagé. Cela permet une origine serveur pour indiquer que le certaines parties de la réponse sont destinées à un seul utilisateur et ne sont pas valide réponse pour les demandes présentées par d'autres utilisateurs. Un cache privé (non partagé) peut mettre en cache réponse. Remarque: Cette utilisation de la word private ne contrôle que les la réponse peut être mise en cache et ne assurer la confidentialité du message contenu.

Donc ça ressemble à il s'agit plus de "cache partagé" au lieu de cache intermédiaire.

27
répondu 太極者無極而生 2010-07-27 13:00:00