我试图找出配置为“缓存控制最大年龄=0,必须重新验证”的服务器与具有“缓存控制:无缓存,无存储”的服务器之间的区别。因此,首先,据我所知,根本不是缓存敏感信息,因为最大年龄是0,客户端每次都需要重新验证更改。然而,我的一些老年人提到,仍然是脆弱的!不过,我没看到我的扫描仪收到那面旗子。所以,
发布于 2020-06-15 00:29:32
HTTP(S)缓存是在RFC 7234中定义的;目前没有任何替代文档,因此您应该参考以下内容。
no-cache
响应指令有点用词不当。它并不禁止缓存文档。它允许缓存文档,但它立即被认为是过时的,在使用之前必须在源服务器上重新验证。您将注意到,这与max-age=0, must-revalidate
的语义完全相同。在这两种情况下,内容都被缓存,如果服务器向验证请求发送304响应,则可以使用缓存的文档。
若要实际请求缓存而不缓存文档,请使用no-store
。在这种情况下,甚至不需要严格指定no-cache
,因为文档无论如何都不会被缓存!但这可能比单独使用no-cache
慢得多,因为每次用户访问文档时都必须重新下载整个文档。
也许您使用的Cache-Control
指令中有一个没有包含no-store
的事实就是您的前辈所指的,尽管将其称为“漏洞”严重夸大了问题,而且这是否是安全问题(尽管这通常是隐私问题)取决于您所提供的内容。
在发送特定于用户的信息的大多数上下文中,设置Cache-Control: private
并允许用户浏览器缓存数据就足够了,而共享缓存不会缓存数据。我想不出有多少真的需要no-store
d,除了私钥,核发射码,每15秒改变一次的数据,等等。
https://serverfault.com/questions/1021429
复制相似问题