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

一种新型滥用缓存密钥规范化的缓存投毒技术

背景内容 大家可以看到,实现DoS攻击所需的只是一个未缓存的Header,它将强制源服务器发送格式错误的请求。...有趣的是,由于主机值应该不区分大小写,一些开发人员会假设在将主机头值引入cachekey时写入小写字符会是安全的,而不会更改发送到后端服务器的实际请求。...在将该漏洞上报之后,我又拿到了800美金的漏洞奖励。 分析过程中,我还发现它的负载均衡器(HAProxy)在接收到了大写的Header值时,便会响应404错误。...起初,我认为1.0.5只是一个版本号,所以我没有太过关注,但令我惊讶的是,当我尝试1.0.4时,竟然出现了缓存命中的情况。...,并将请求重定向到服务器上不存在的/map/4/77/16.png,从而导致404错误。

63210

一种新的滥用缓存密钥规范化的缓存投毒技术分享

背景内容 大家可以看到,实现DoS攻击所需的只是一个未缓存的Header,它将强制源服务器发送格式错误的请求。...有趣的是,由于主机值应该不区分大小写,一些开发人员会假设在将主机头值引入cachekey时写入小写字符会是安全的,而不会更改发送到后端服务器的实际请求。...在将该漏洞上报之后,我又拿到了800美金的漏洞奖励。 分析过程中,我还发现它的负载均衡器(HAProxy)在接收到了大写的Header值时,便会响应404错误。...起初,我认为1.0.5只是一个版本号,所以我没有太过关注,但令我惊讶的是,当我尝试1.0.4时,竟然出现了缓存命中的情况。...,并将请求重定向到服务器上不存在的/map/4/77/16.png,从而导致404错误。

67210
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    协议层的攻击——HTTP请求走私

    当我们向代理服务器发送一个比较模糊的HTTP请求时,由于两者服务器的实现方式不同,可能代理服务器认为这是一个HTTP请求,然后将其转发给了后端的源站服务器,但源站服务器经过解析处理后,只认为其中的一部分为正常请求...当我们重复发送请求后,发送的请求在后端服务器拼接成了类似下面这种请求。...当ATS服务器接收到的请求中存在请求字段与:之间存在空格的字段时,并不会对其进行修改,也不会按照RFC标准所描述的那样返回400错误,而是直接将其转发给后端服务器。...而当后端服务器也没有对该标准进行严格的实现时,就有可能导致HTTP走私攻击。比如Nginx服务器,在收到请求头字段与冒号之间存在空格的请求时,会忽略该请求头,而不是返回400错误。...接着我们又继续发送相同的数据包,后端服务器接收到的是前端代理服务器已经处理好的请求,当接收的数据的总长度到达70时,后端服务器认为这个请求已经传输完毕了,然后进行响应。

    1.9K20

    协议层的攻击——HTTP请求走私

    当我们向代理服务器发送一个比较模糊的HTTP请求时,由于两者服务器的实现方式不同,可能代理服务器认为这是一个HTTP请求,然后将其转发给了后端的源站服务器,但源站服务器经过解析处理后,只认为其中的一部分为正常请求...当我们重复发送请求后,发送的请求在后端服务器拼接成了类似下面这种请求。...当ATS服务器接收到的请求中存在请求字段与:之间存在空格的字段时,并不会对其进行修改,也不会按照RFC标准所描述的那样返回400错误,而是直接将其转发给后端服务器。...而当后端服务器也没有对该标准进行严格的实现时,就有可能导致HTTP走私攻击。比如Nginx服务器,在收到请求头字段与冒号之间存在空格的请求时,会忽略该请求头,而不是返回400错误。...接着我们又继续发送相同的数据包,后端服务器接收到的是前端代理服务器已经处理好的请求,当接收的数据的总长度到达70时,后端服务器认为这个请求已经传输完毕了,然后进行响应。

    2.6K40

    前端 er,什么时候,你想写一个 HTTP 服务器?

    大家好,我是杨成功。 曾几何时,作为前端的你,想要写一个 HTTP 服务器?...当你接后端同伴的接口时,你把数据带去,接口竟然给你返回 500 错误;你去找后端,后端说这样传不行,你不知道为啥不行,反正按照他说的改完,返回 200 成功了。...有时候你的请求莫名其妙的就跨域了,后端说让你们自己处理,你就找呀找解决方案。但是为什么会跨域?后端怎么配置的,你也不清楚。...写 HTTP 服务器需要后端语言,不用说,自然首选 Node.js。 下面我们基于 Node.js 的 http 模块,一起搭建一个的 HTTP 服务器。...就是我收到了客户端的请求,我可以设置状态码为 200 并返给前端数据;或者设置状态码为 500 并返给前端错误。 总之一句话,调用接口返回什么,是由 response 决定的。

    92730

    Nginx+upstream针对后端服务器容错的运维笔记

    ,或者向后端服务器发送请求时,或者从后端服务器接收响应头时,出现错误。...timeout   表示和后端服务器建立连接时,或者向后端服务器发送请求时,或者从后端服务器接收响应头时,出现超时。...,请求被传送到后端 ·HIT 缓存命中 ·EXPIRED 缓存已经过期请求被传送到后端 ·UPDATING 正在更新缓存,将使用旧的应答 ·STALE 后端将得到过期的应答 ==============...在连接到一个服务器,发送一个请求,或者读取应答时发生错误。...off    禁止转发请求到下一台服务器。 转发请求只发生在没有数据传递到客户端的过程中。 其中记录到nginx后端错误数量的有500、502、503、504、timeout,404不记录错误。

    8.3K90

    【NGINX入门】8.Nginx的upstream 模块及参数测试

    功能:该变量出现在 Nginx 0.8.3 版本中, 可能的值如下: MISS - 缓存中未被命中 EXPIRED - 生存期期满,请求被传递到后端服务器 UPDATING - 生存期满,陈旧的响应被使用...查看 web1(192.168.118.16)日志: 一共发起了 4 次请求,而 web1 接收到了 4 次,也就是这 4 次请求,都是 web1 来响应的。...为什么 4 次请求都是 web1 响应的呢? 通过上图,当 nginx 首次轮询到 web2 时,连接失败,web2 返回 RST,nginx会再次发起请求到 web1 。...,或者向后端服务器发送请求时,或者从后端服务器接收响应头时,出现错误 timeout 表示和后端服务器建立连接时,或者向后端服务器发送请求时,或者从后端服务器接收响应头时...表示后端服务器返回的响应状态码为504 http_404 表示后端服务器返回的响应状态码为404 off 表示停止将请求发送给下一台后端服务器

    9.3K20

    React 配置代理

    后端我用的是Django gitee 地址如下:gitee.com/yangyiming1… def my_view(request): print("请求了") return JsonResponse...从客户端发送的ajax请求,去请求服务端的8000。这个请求ajax是允许了,但是服务端的响应回到客户端时被拒绝了。...它请求的并不是服务端的,而是脚手架、也就是3000端口的public文件夹下的index.html。当3000端口下能找到就返回,如果没有才会去请求8000端口。当二者都没有才会返回404....方法二 我们上面的方法只适用于 对应一个后端的项目,当我们同时需要请求多个后端(多个端口)就不可以了。...// 让服务器知道从哪发出的 控制服务器收到的请求头的Host字段的值 changeOrigin:true, // 把api1 替换成空格。

    1.2K40

    有遇到布署服务器后刷新404问题吗?

    一、如何部署 前后端分离开发模式下,前后端是独立布署的,前端只需要将最后的构建物上传至目标服务器的web容器指定的静态目录下即可 我们知道vue项目在构建后,是生成一系列的静态文件 常规布署我们只需要将这个目录上传至目标服务器即可...我们先还原一下场景: vue项目在本地时运行正常,但部署到服务器中,刷新页面,出现了404错误 先定位一下,HTTP 404 错误意味着链接指向的资源不存在 问题在于为什么不存在?.../#/login 只有 website.com 会被包含在请求中 ,因此对于服务端来说,即使没有配置location,也不会返回404错误 解决方案 看到这里我相信大部分同学都能想到怎么解决问题了, 产生问题的本质是因为我们的路由是通过...JS来执行视图切换的, 当我们进入到子路由时刷新页面,web容器没有相对应的页面此时会出现404 所以我们只需要配置将任意页面都重定向到 index.html,把路由交由前端处理 对nginx配置文件....nginx -s reload 这么做以后,你的服务器就不再返回 404 错误页面,因为对于所有路径都会返回 index.html 文件 为了避免这种情况,你应该在 Vue 应用里面覆盖所有的路由情况

    8.2K31

    Node JS 中间件如何工作?

    所有例子都应在 Node ver 8+ 和NPM ver 5+ 下使用。 本文使用了 Express 4.x 版。这很重要,因为从 3.x 版到 4.x 版有重大的更改。...为什么要用它? 假设你在 web 网络服务器上正在使用 Node.js 和 Express 运行Web应用程序。在此应用中,你需要登录的某些页面。...当 Web 服务器收到数据请求时,Express 将为你提供一个请求对象,其中包含有关用户及其所请求数据的信息。Express 还使你可以访问响应对象,可以在Web服务器响应用户之前对其进行修改。...该函数在程序每次收到请求时执行。如果有错误,它会仅结束响应,而不会调用后续的中间件或路由处理。...第三方级别的中间件 在某些情况下,我们将向后端添加一些额外的功能。先安装 Node.js 模块获取所需的功能,然后在应用级别或路由器级别将其加载到你的应用中。

    3.2K30

    《前端运维》二、Nginx–1基本概念及安装

    大家好,又见面了,我是你们的朋友全栈君。 一、Nginx基本概念   简单来说,Nginx就是一个代理服务器,什么是代理服务器呢?...也就是当我们访问服务器的时候,请求不会直接请求到服务器,中间会有个代理,代理会预先于服务器处理这些请求,最后由代理决定是否要把请求提交至服务器。   那么,Nginx解决了什么问题?...在接收到来自外界的信号时,向各worker进程发送信号,每个进程都有可能来处理该信号。...4、sendfile零拷贝传输模式 二、安装Nginx   首先,假设你看了我之前写的Linux部分,那么请把服务器重置一下,我们从0、从一个干净的服务器环境开始。   ...restart会粗暴的断开与客户端的连接。reload会在下一次服务接入时使用新的配置,不会终端当前处理中的旧配置请求。 nginx -t,可以校验nginx配置文件语法是否错误。

    23910

    《前端运维》二、Nginx--1基本概念及安装

    也就是当我们访问服务器的时候,请求不会直接请求到服务器,中间会有个代理,代理会预先于服务器处理这些请求,最后由代理决定是否要把请求提交至服务器。   那么,Nginx解决了什么问题?...Nginx的优势主要有: 高并发、高性能 可扩展性好 高可靠性 热部署 开源许可   这样,大家就可以理解,为什么要使用Nginx了吧,主要就是为了解决传统服务器的一些局限性。...在接收到来自外界的信号时,向各worker进程发送信号,每个进程都有可能来处理该信号。...4、sendfile零拷贝传输模式 二、安装Nginx   首先,假设你看了我之前写的Linux部分,那么请把服务器重置一下,我们从0、从一个干净的服务器环境开始。   ...restart会粗暴的断开与客户端的连接。reload会在下一次服务接入时使用新的配置,不会终端当前处理中的旧配置请求。 nginx -t,可以校验nginx配置文件语法是否错误。

    31050

    【前端词典】从输入 URL 到展现涉及哪些缓存环节

    但我们输入一个常用的网址时,经常会有这样的情况,我们只是输入了几个字母,浏览器就自动补全了该网址。如下图:我只输入 j,就自动给我补全了 juejin.im: ?...当我们使用这个自动补全的网址时,你会发现请求的相关的静态资源也是从缓存中取得的。 ?...资源更新时间小于指定时间 no-transform 代理服务器不可以更改媒体类型 only-if-cached 客户端只接受已缓存的响应,若缓存不命中,则返回 504 错误 cache-extension...其实我们第一次获取的资源极有可能是从 CDN 节点的缓存中获取的,也很有可能是从中间代理服务器(nginx,node 等)的缓存中读取的;其中的好处不言而喻。...我们知道每次计算的时间可能会比较久,所以在这步我们可以在后端将可能的组合结果先计算好缓存起来,当我们请求的时候就后端就可以直接返回已经计算好的结果给前端。

    1.2K70

    Fetch还是Axios——哪个更适合HTTP请求?

    Axios 概述和语法 Axios 是一个 Javascript 库,用于从 Node.js 或 XMLHttpRequests 或浏览器发出 HTTP 请求。...JSON 如前所述,当我们在使用 .fetch() 方法的时候,需要对响应数据使用某种方法,当我们在发送带有请求的 body 时,需要对数据进行字符串化。...如果出现像 404 这样的错误响应,promise 就会被拒绝并返回一个错误,所以我们需要捕获一个错误,我们可以检查它是什么类型的错误,就是这样。让我们看看代码示例。...我返回了数据,但是如果请求以任何方式失败,我就能够检查 .catch() 部分中的错误类型并返回正确的消息。...HTTP 拦截 当我们需要检查或改变我们从应用程序到服务器的 HTTP 请求时,或者以其他方式,例如,为了验证,HTTP 拦截可能是重要的。

    5K20

    nginx基本应用(二)

    为了从原始服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转交并且将获得的内容返回给客户端。...,否则后端服务器将被标记为不可用 fail_timeout,表示错误次数的超时时间; 当被标记为不可用后,暂停服务的时间。...,可以在配置中添加一个http头来显示此变量的值 变量的值 MISS: 未命中的缓存 HIT: 命中缓存 EXPIRED: 缓存已经过期,请求将被传递到后端 STALE: 后端将得到过期的应答 UPDATING...: 正在更新缓存,将使用旧的应答 REVALIDATED: nginx验证了旧的缓存依然有效 BYPASS: 缓存被绕过了,应答是从原始服务器获得的 代理缓存配置示例 为验证缓存,这里我将缓存超时时间设为...1分钟,当我命中缓存之后,就开始进行缓存清理测试,之后在一分钟内再次访问同一个URL,就发现缓存命中失败了 ?

    71930

    马蜂窝容器化平台前端赋能实践

    答案是肯定的。 最初当我向公司的前端同学「安利」容器技术的时候,很多人都会说:「容器?这不是用在后端的技术吗?我不懂啊,而且前端开发用不上吧。」...下图从应用的角度出发,展示了前端应用在容器化平台的生命周期: 应用中心 应用是容器云平台的基本操作对象。云平台一个非常大的好处是屏蔽了项目的类型,不分前端或后端。...然后向服务端发送请求时,网关就会发现这个携带了某个版本的 cookie,自动完成转发: 3....也就是 A 网关接收到新配置的同时,基本上 B 网关也已经接收到新配置,这时候所有请求无论打到哪个网关,他们都会指向同一个版本,这个时候线上就不会再出现 404 的请求。 2....那么既然我的 html 已经没问题了,为什么 js 还会出现 404?

    1K30

    RESTful API接口设计规范与最佳实践

    POST 请求可能会导致新的资源的建立和/或已有资源的修改 3 PUT 从客户端向服务器传送的数据取代指定的文档的内容 4 PATCH 是对 PUT 方法的补充,用来对已知资源进行局部更新 5 DELETE...请求服务器删除指定的页面 从上面的表格可以看出,不同类型的请求方法有着自己明确的含义,在理想的情况下,我们可以通过一个请求类型+请求地址的形式,直观的看出一个接口的作用,比如: // 猜猜阿克苏我想干嘛...,服务器已经理解请求,但是拒绝执行它 404 Not Found 服务器无法根据客户端的请求找到资源(网页)。...解析:这个问题情况有点特殊,理论上来说,当我们查询了资源然后结果是不存在的时候,这个时候用404的HTTP状态码来标识本次请求的响应状态是一点问题都没有的,也是非常规范的做法。...但是这是建立在业务场景规定,查询结果为空的时候属于异常的前提上。 1返回HTTP状态码 200 当我们查询一个资源但是结果为空,到底要不要把本次请求视为一个404的异常是取决于业务场景。

    1.2K10

    前后端不分离到分离演变,优势,前后端接口联调,排错及优化

    服务器接收到浏览器的请求后,进行处理得到数据,然后将数据填充到静态页面中,最终返回给浏览器。...服务器一分为二,前后端分别部署,静态资源放在前端服务器,业务代码放在后端服务器. 2. 前端服务器需要接受http请求 (一般使用node.js) 3....大并发情况可以水平扩展前后端服务器 在大并发情况下,我可以同时水平扩展前后端服务器,比如淘宝的一个首页就需要2000+台前端服务器做集群来抗住日均多少亿+的日均pv。...8.如果页面上有一些权限等等相关的校验,那么这些相关的数据也可以通过ajax从接口里拿。 9.对于既可以前端做也可以后端做的逻辑,我建议是放到前端,为什么?...当我的朋友Jack把static文件夹下的mock数据删除之后,在运行项目,发现报错了,浏览器告诉他,你访问的mock下面的index.json文件找不到404。

    2.7K50

    java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-apicaptchaImage 404如何处理

    404异常和验证码不显示的问题,可以尝试以下几种方法:检查接口路径: 确保 prod-api/captchaImage 接口路径正确,并且后端服务已经部署并运行。...端口号配置: 确保前端和后端使用的端口号一致。可以在 application.yml 文件中配置端口号:yamlserver: port: 8080确保前端请求和后端服务都使用相同的端口号。...查看日志: 查看后端服务和代理服务器的日志,找出具体的错误信息,有助于更好地定位问题。...十多分钟终于恍然大悟,那么要纠正上篇问题,我仔细对比了若依官方是 ruoyi-admin 一个java服务 虽然建立2个,请求地址是api,但是后台访问是不带api这个也就是说其实请求地址还是api那个...,我们额外开发的,虽然我不知道当时技术总监为什么要这么多,有可能那时候若依技术不成熟吧,我看若依的那时候的版本很低,毕竟这产品是2021年出来的也有4年了。

    21010

    nginx+memcached构建页面缓存应用

    一.前言 nginx的memcached_module模块可以直接从memcached服务器中读取内容后输出,后续的请求不再经过应用程序处理,如php-fpm、django,大大的提升动态页面的速度。...nginx只负责从memcached服务器中读取数据,要往memcached写入数据还得需要后台的应用程序来完成,主动的将要缓存的页面缓存到memcached中,可以通过404重定向到后端去处理的。...memcached的key可以通过memcached_key变量来设置,如以$uri。如果命中,那么直接输出内容,没有命中就意味着nginx需要从应用程序请求页面。...同时包含"Bad Gateway"错误和"Gateway Timeout"错误,如:error_page 404 502 504 = @app ;。..., location 读取从memcached服务器接收到响应的缓冲大小。

    71320
    领券