首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用HTTP标头"Cache-Control:public"有什么风险?

使用HTTP标头"Cache-Control:public"可能存在以下风险:

  1. 数据泄露:将数据标记为公共缓存可能导致敏感信息被其他人访问。如果您的网站包含用户的私人数据或其他敏感信息,这可能会导致数据泄露。
  2. 缓存不一致:公共缓存可能会被多个用户共享,因此如果某个用户对数据进行了更改,其他用户可能会看到过时的信息。这可能导致数据不一致和用户体验下降。
  3. 安全性降低:将数据标记为公共缓存可能会导致攻击者更容易地访问您的数据。攻击者可能会利用这些缓存数据来获取您网站的敏感信息。

为了避免这些风险,您可以考虑使用其他缓存策略,例如将数据标记为私有缓存("Cache-Control:private")或使用代理缓存。同时,确保您的网站在部署时遵循最佳安全实践,以减少潜在的安全风险。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用结构化的字段改善HTTP

不幸的是,从最初到现在我们定义和使用HTTP header的方式并没有什么大的改变,由于未指定的Headers(以及处理方式的多样性)引起的互通性问题,为开发人员带来很多痛苦,甚至引发安全问题。...●HTTP什么问题?...● 大多数Web开发人员都熟悉HTTP;如Content-Length、Cache-Control和Cookie之类。...这允许新字段的作者根据这些类型定义它。例如,他们可以说“这是一个字符串列表”,人们将知道如何使用一个现成的库来明确地解析和生成,而不是编写特定于的代码。...例如,许多Cache-Control报头都是有效的“结构化字段”,即使它没有定义为一个: Cache-Control: max-age=3600, immutable 很不幸你还不能将结构化字段用于现有的

64210

跟我一起探索 HTTP-HTTP缓存

请注意,如果响应具有 Authorization ,则不能将其存储在私有缓存(或共享缓存,除非 Cache-Control 指定的是 public)中。...Expires 或 max-age 在 HTTP/1.0 中,新鲜度过去由 Expires 指定。 Expires 使用明确的时间而不是通过指定经过的时间来指定缓存的生命周期。...因此,下面的请求显示客户端发送带有 If-Modified-Since 请求的请求,以询问服务器自指定时间以来是否任何的改变。...请注意,数字“41”具有最长的 max-age(1 年),但具有 publicpublic 值具有使响应可存储的效果,即使存在 Authorization 。...备注: 只有在设置了 Authorization 时需要存储响应时才应使用 public 指令。否则不需要,因为只要给出了 max-age,响应就会存储在共享缓存中。

26351
  • ASP.NET Core ResponseCache进行缓存操作

    ASP.NET Core对于HTTP缓存分为两种: 客户端(浏览器缓存) 服务端缓存 客户端缓存 通过设置HTTP的响应 Cache-Control 来完成页面存储到浏览器缓存中如下所示: ?...ResponseCache中间件使用HTTP 响应 描述 Authorization 如果存在,则不会缓存。...如果存在此,则由 Cache-Control 头中的相关指令重写。 考虑向后兼容 HTTP/1.0。 Set-Cookie 如果存在,则不会缓存响应。...Authorization 不得存在。 Cache-Control 参数必须是有效的,并且响应必须标记为 “public” 且未标记为 “private”。...如果 Cache-Control 不存在,则 Pragma: no-cache 不得存在,因为 Cache-Control 在存在时将覆盖 Pragma

    3K20

    你还在为 HTTP 的这些概念头疼吗?

    Cache-Control 是通用的指令,它能够管理如何对 HTTP 的请求或者响应使用缓存。...下表提供了一个 Cache-Control 选项的总结并告诉你如何去使用 “请注意,在 Cache-Control 头中只能出现一个指令,但是在消息中可以出现多个这样的。 ?...public public 属性只出现在客户端响应中,表示响应可以被任何缓存所缓存。在计算机网络中,分为两种缓存,共享缓存和私有缓存,如下所示 Cache-Control: public ?...请求 请求用于客户端发送 HTTP 请求到服务器中所使用的字段,下面我们一起来看一下 HTTP 请求都包含哪些字段,分别是什么意思。...请求会告知客户端能够接收的 MIME 类型是什么 那么什么是 MIME 类型呢?

    2.4K30

    HTTP」都给你整理好了

    Cache-Control 是通用的指令,它能够管理如何对 HTTP 的请求或者响应使用缓存。...下表提供了一个 Cache-Control 选项的总结并告诉你如何去使用 “请注意,在 Cache-Control 头中只能出现一个指令,但是在消息中可以出现多个这样的。 ?...public public 属性只出现在客户端响应中,表示响应可以被任何缓存所缓存。在计算机网络中,分为两种缓存,共享缓存和私有缓存,如下所示 Cache-Control: public ?...请求 请求用于客户端发送 HTTP 请求到服务器中所使用的字段,下面我们一起来看一下 HTTP 请求都包含哪些字段,分别是什么意思。...请求会告知客户端能够接收的 MIME 类型是什么 那么什么是 MIME 类型呢?

    5.5K41

    网页性能优化浅谈与实践

    通常 cache-control 被认为是一种比 expires(到期) 更现代,更灵活的方法,但是两个可以同时使用。 Q: 如何进行缓存?...答: 通过标识资源或资源类型(例如图像或CSS文件),然后使用所需的缓存选项指定资源的,来启用缓存。...从缓存控制和缓存校验两个角度来看http的缓存 1.缓存控制:控制缓存的开关,用于标识请求或访问中是否开启了缓存,使用了哪种缓存方式。...Q: public和private的选择? 如果采用CDN建议将cache-control的值为public,提升缓存命中率。...Tips : expires 只是设置内容应在将来的时间。此后对内容的请求必须返回到原始服务器。使用更新且更灵活的高速缓存控制expires通常用作备用。

    59720

    什么是 CORS(跨源资源共享)?

    这些嵌入式资产存在安全风险,因为这些资产可能包含病毒或允许服务器访问黑客。 安全策略减轻了资产使用的安全风险。该政策规定了请求站点可以根据来源或内容加载哪些资产,并规定了提供给请求站点的访问量。...CORS 将新的 HTTP 添加到标准列表中。新的 CORS 允许本地服务器保留允许的来源列表。 来自这些来源的任何请求都会得到批准,并且允许他们使用受限资产。...添加到可接受来源列表的是Access-Control-Allow-Origin. 许多不同类型的响应可以实现不同级别的访问。...以下是CORS HTTP 的更多示例: Access-Control-Allow-Credentials Access-Control-Allow-Headers Access-Control-Allow-Methods...大多数请求分为两大类: 简单请求:这些请求不会触发预检并仅使用“安全列表”CORS 。 预检请求:这些请求发送“预检”消息,概述请求者在原始请求之前想要做什么

    44030

    HTTP的缓存机制是什么

    缓存HTTP 协议提供了一些特定的缓存,如 ETag(实体标签)和 Last-Modified(最后修改时间),用于识别和比较资源的不同版本。...2.缓存控制: Cache-Control Cache-ControlHTTP 协议定义的一个重要字段,用于控制缓存行为。...常用的 Cache-Control 指令包括 public:允许任何缓存存储副本。 private:仅允许单个用户的缓存存储副本。 max-age:指定缓存副本的有效时间(以秒为单位)。...Expires :Expires 也用于指定缓存副本的有效时间,但它使用的是绝对时间而不是相对时间。...4.缓存策略: 强缓存:通过设置合适的缓存控制(如 Cache-Control 和 Expires),服务器可以要求客户端或代理服务器始终使用缓存副本,而不需要进行验证。

    34220

    WEB缓存探究

    前言 由于项目越来越大,即使了使用代码压缩工具减少文件大小,js文件还是不可避免的越变越大。而对于用户来说每次重新下载都有可能会消耗大量时间,让我们的首屏展示较长时间的空白。...-- 示意到期时间 HTTP1.0 & 1.1 --> 但是使用meta标签设置的参数优先级低于http请求中声明的,如果你同时设置了http,那么就没有必要加上meta标签了。...Cache-Control Cache-Control 是在 HTTP/1.1 规范中定义的,取代了之前用来定义响应缓存策略的例如 Expires。...HTTP 1.0代理,那么你可以无视Expires Cache-Control: no-store, must-revalidate 如果服务器自动包含有效的Date,则理论上也可以省略Cache-Control...不过如果客户端和服务端时间差别,就可能会失败哦 Date: Wed, 24 Aug 2016 18:32:02 GMTExpires: 0 总的来说还是使用Cache-Control最妥妥的(如果不打算考虑

    73340

    反向代理的攻击面 (下)

    一般来说,反向代理服务器会使用缓存标志,该标志与请求的主机头值和路径相关联。 反向代理对某个响应缓存与否,它会先检查请求中的Cache-Control和Set-Cookie。...Cache-control框架非常复杂,但是基本的功能标志,例如决定是否缓存,设置缓存时限等。...Cache-control形式下面这些: Cache-Control: no-cache, no-store, must-revalidate Cache-Control: public, max-age...在大部分情况下,如果web应用的某个脚本使用了session功能,那么该应用会严格设置Cache-control的缓存功能,因此如遇到这种情况,开发者不需要考虑(安全)。...然而有例外,例如,如果web应用使用它自己的session安全机制,Cache-control可能会存在漏洞。 攻击 反向代理的一个常用功能是“积极缓存”(这不是官方词汇,但可以描述其作用)。

    1.7K40

    对不起,看完这篇HTTP,真的可以吊打面试官

    no-cache 属于 Cache-Control 通用,其一般的表示方法如下 Cache-Control: no-cache 也可以使用 max-age = 0 来实现不缓存的效果。...共享缓存一般使用 public 来表示,public 属性只出现在客户端响应中,表示响应可以被任何缓存所缓存。一般表示方法如下 Cache-Control: public ?...缓存控制 HTTP/1.1 中的 Cache-Control 常规字段用于执行缓存控制,使用可通过其提供的各种指令来定义缓存策略。...Cache-Control: must-revalidate 下面是一个缓存验证图 ? 什么是新鲜的数据 一旦资源存储在缓存中,理论上就可以永远被缓存使用。...,这个用来响应预检请求,它发出实际请求时可以使用哪些HTTP

    6.4K21

    在Spring Boot中实现HTTP缓存

    一旦确定了HTTP缓存的竞争者,就需要选择合适的方法来管理缓存的验证。HTTP协议定义了几个请求和响应,您可以使用它们来控制客户端何时清除缓存。 选择适当的HTTP取决于您要优化的特定情况。...HTTP缓存在固定的时间内有效:如果要阻止客户端在指定时间内重新获取资源,则应该使用Cache-Control,可以在其中指定应该重新获取所获取数据的时间。...应该使用Expires HTTP。应使用标准化数据格式之一格式化日期值。...如果响应中存在Cache-Control和Expires,则客户端仅使用Cache-Control。...当您不跟踪资源的修改日期时,您也被迫使用ETag。服务器可以根据资源的属性计算其值。将其视为对象的哈希码。 如果资源具有其修改日期并且您可以使用一秒精度,请使用Last-Modified。为什么

    5.2K50

    震惊 | HTTP 在疫情期间把我吓得不敢出门了

    no-cache 属于 Cache-Control 通用,其一般的表示方法如下 Cache-Control: no-cache 也可以使用 max-age = 0 来实现不缓存的效果。...共享缓存一般使用 public 来表示,public 属性只出现在客户端响应中,表示响应可以被任何缓存所缓存。...一般表示方法如下 Cache-Control: public 缓存控制 HTTP/1.1 中的 Cache-Control 常规字段用于执行缓存控制,使用可通过其提供的各种指令来定义缓存策略...Cache-Control: must-revalidate 下面是一个缓存验证图 什么是新鲜的数据 一旦资源存储在缓存中,理论上就可以永远被缓存使用。...,这个用来响应预检请求,它发出实际请求时可以使用哪些HTTP

    5.3K20

    HTTP缓存机制的Etag、Last-Modified、If-None-Match和If-Modified-Since、Expires和Cache-Control笔记

    问题来了,Etag和Last-Modified什么区别?如果文件被修改了,那么修改时间也变了,我们可以通过判断修改时间来判断文件是否被修改,从而返回相应的状态码,那Etag是不是多余的?...所以,建议Expires结合Cache-Control一起使用,大型网站中一起使用的情况比较多见。 Cache-Control: 该字段是HTTP/1.1协议中的,可以是请求头中的或者响应头中的字段。...但是Cache-Control可能被某些缓存和浏览器忽略。可以通过将Expires HTTP版本1.0字段值设置为早于响应时间的时间来进行模拟。...这个和HTTP / 1.0规范中定义的Pragma:no-cache字段具有相同的目的。但是,它仅为请求定义。它没有指定它在响应头中的含义。...如果文档的ETag仍然与If-None-Match的值匹配,则服务器将不发送实际文档。

    2K20

    跟我一起探索 HTTP-跨源资源共享(CORS)

    在预检中,浏览器发送的头中标示 HTTP 方法和真实请求中会用到的。...现代浏览器支持在 API 容器中(例如XMLHttpRequest 或 Fetch使用 CORS,以降低跨源 HTTP 请求所带来的风险什么情况下需要 CORS?...使用drawImage将图片或视频画面绘制到 canvas。 来自图像的 CSS 图形 本文概述了跨源资源共享机制及其所涉及的 HTTP 。...接下来的内容将讨论相关场景,并剖析该机制所涉及的 HTTP 字段。 若干访问控制场景 这里,我们使用三个场景来解释跨源资源共享机制的工作原理。...CORS 字段来处理权限: 以下是浏览器发送给服务器的请求报文: GET /resources/public-data/ HTTP/1.1 Host: bar.other User-Agent:

    36030

    Nginx结构全解析(109)

    Nginx配置缓存 一.简介 proxy_cache模块用于反向代理,首先定义一个cache配置,后面使用中可以选择使用其中一个cache配置 原理: 客户端–nginx–后端程序 当客户端访问nginx...时,nginx将访问后端程序,获得信息后再返回给客户端 客户端–nginx–nginx_cache–后端程序 现在客户端访问nginx时,nginx先根据url进行hash,看本地cache文件里是否,...则传给客户端,没有则去后端程序获取。...默认情况下,NGINX需要考虑从原始服务器得到的Cache-Control。...Cache-Controlhttp网页缓存,当服务器发送给浏览器的http中含有public,则浏览器呈现来自缓存的页面。private则浏览器重新发送请求到服务器。

    28400

    .NET Core 允许跨域的两种方式实现(IIS 配置、C# 代码实现)

    一、IIS 配置实现 1、生效范围 如下图: 1 位置为 IIS 根目录,在此属性中配置“HTTP响应”时,作用域为“网站”下级目录中的全部应用。...2 位置是指定某一网站,在此属性中配置“HTTP响应”时,作用域为当前应用,不对其他同级应用有影响。...2、常用的配置项共有四个 HTTP 响应 是否必含 值 解释 Access-Control-Allow-Origin 是 * 或 http://IP:Port 允许跨域请求的地址,* 代表允许全部,...使用 [EnableCors] 属性可以针对性的启用同一个 CORS。也可以对需要 CORS 的终结点配置指定的策略名称,来实现最佳控制。 [EnableCors] 指定默认策略。...默认可用的响应包括:Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma。

    1.2K40

    如何在Ubuntu 16.04上使用Nginx的模块实现浏览器缓存

    为此,必须引入告知浏览器行为方式的新HTTP响应。 这就是Nginx的标题模块发挥作用的地方。此模块可用于向响应添加任意任意,但其主要作用是正确设置缓存。...稍后我们将使用这些文件来检查Nginx的默认行为,然后测试浏览器缓存是否正常工作。 为了决定通过网络提供什么类型的文件,Nginx不分析文件内容; 那会非常慢。...第3步 - 配置缓存控制和过期 除了ETag文件验证之外,还有两个缓存控制响应Cache-Control和Expires。...如果未设置,浏览器将始终从服务器请求文件,期望200 OK或304 Not Modified响应。 我们可以使用模块来设置这些HTTP。...: no-cache Accept-Ranges: bytes 该Expires标题显示在过去的日期h和用no-cache设置的Cache-Control,它告诉浏览器总是问服务器是否该文件的较新版本

    1.4K30
    领券