cache-control: no-cache 是否足以处理银行账户等敏感信息?

信息安全 Web应用程序 网页浏览器 http 标题 敏感数据暴露
2021-08-16 23:07:40

我在某处读到,在网站上存储敏感信息时,您应该包括cache-control: no-store告诉浏览器不要将该信息存储在本地系统上。但我认为何时cache-control: no-cache使用它只是告诉浏览器不要缓存该页面。

因此,在我的一次安全评估中,我遇到了一个网站,该网站cache-control: no-cache在响应中仅使用标题,其中包含 API 密钥、信用卡和银行账户等敏感信息。

为了更好的安全性,这些响应是否应该包含cache-control: no-store,pragma: no-cache还是cache-control: no-cache足够了?

1个回答

不,cache-control: no-cache不会阻止浏览器缓存存储响应数据。改为使用cache-control: no-store

根据RFC 7234,第 5.2.2.2 节

“no-cache”响应指令指示响应不能用于满足后续请求,而无需在源服务器上成功验证。

请注意,“没有成功验证”意味着如果与源服务器的验证成功,则可以使用缓存的响应。(验证过程在第 4.3 节中描述。)因此,cache-control: no-cache不会阻止用户代理存储响应的内容。

pragma: no-cache出于同样的原因也是不正确的。请参阅RFC 7234,第 5.4 节

当请求中不存在 Cache-Control 标头字段时,缓存必须认为 no-cache 请求 pragma-directive 与存在“Cache-Control: no-cache”具有相同的效果(参见第 5.2.1 节) .

相比之下,RFC 7234,第 5.2.2.3 节说:

“no-store”响应指令指示缓存不得存储即时请求或响应的任何部分。该指令适用于私有和共享缓存。在这种情况下,“不得存储”意味着缓存不得有意将信息存储在非易失性存储中,并且必须尽最大努力在转发信息后尽快从易失性存储中删除信息。

这听起来更接近你正在寻找的东西。