当前位置: 首页 > news >正文

XHR/Fetch请求介绍与安全测试

目录
  • XHR/Fetch是什么?
  • 所引发的安全问题


XHR/Fetch是什么?

XHR/Fetch 都是浏览器服务器进行数据通信(即 API 调用)的两种主要技术。

简单来说,它们都是用来实现 AJAX(Asynchronous JavaScript and XML)理念的技术,即在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容。

XHR和Fetch功能都是一样的,只不过Fetch 可以替代 XHR 的新 Web API。它提供了一种更简洁、更符合逻辑的方式来发起网络请求,并使用 Promise 作为处理异步操作的核心,避免了回调地狱。可以理解Fetch就是升级版的XHR。

误解:AJAX 虽然名字带了个XML,但是它不光只能交互XML,现在该技术主要交互JSON数据。


XHR长什么样?

var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://api.example.com/data', true); // true 表示异步xhr.onload = function() {if (xhr.status >= 200 && xhr.status < 300) {// 请求成功,处理响应数据var data = JSON.parse(xhr.responseText);console.log(data);} else {// 请求失败(如 404, 500)console.error('请求失败:', xhr.statusText);}
};xhr.onerror = function() {// 网络错误等console.error('请求发生错误');
};xhr.send();
  1. 其实就是在JS代码里建了一个请求接口的函数,通过事件去触发这个函数的执行。

    • 代码里需要创建一个XMLHttpRequest对象: xhr;
  2. 当调用xhr.send()时,浏览器会在后台线程中处理网络请求,而不会阻塞JavaScript主线程。

  3. 当XHR请求完成时,浏览器会将回调函数放入事件队列,等待JavaScript主线程空闲时执行。


为什么值得被调试工具标记出来?
image

看到一个请求被归类为 XHR

  • 意味着这个请求是由 XMLHttpRequest 对象发起的。
  • 或者,也可能是由基于 XHR 封装的库(如 jQuery 的 $.ajax)发起的。

看到一个请求被归类为 Fetch

  • 表示这个请求是由现代的 fetch() API 发起的。

为什么工具要区分它们?

  1. 方便筛选
    主要是为了方便开发者调试和筛选。如果你知道你的代码中使用了 fetch(),你就可以直接在筛选器中点击 “Fetch” 来快速找到所有相关的请求,而过滤掉图片、CSS 等无关资源。反之,如果你在用老的项目或库,可以筛选 “XHR”。

  2. 了解该站点请求的资源;


所引发的安全问题

XHR (XMLHttpRequest) 和 Fetch API 是现代Web应用中进行异步通信的主要方式,但它们也引入了多种安全风险。安全测试者需要关注请求中可能存在如下问题:

  1. CSRF (跨站请求伪造)
    攻击者诱使用户在不知情的情况下执行非本意的操作。
    风险:用户数据被修改、权限被滥用

  2. XSS (跨站脚本攻击)
    通过注入恶意脚本,在用户浏览器中执行。
    风险:会话劫持、敏感信息窃取

  3. CORS错误配置
    跨域资源共享策略配置不当,导致敏感数据泄露。
    风险:数据泄露、未授权访问

  4. 敏感信息泄露
    API响应中包含敏感数据(令牌、个人信息等)。
    风险:数据泄露、权限提升

  5. 不安全的直接对象引用 (IDOR)
    未正确验证用户对资源的访问权限。
    风险:未授权数据访问

  6. 业务逻辑漏洞
    应用程序逻辑缺陷,如重复提交、顺序绕过等。
    风险:业务功能被滥用


Checklist:

  • 检查是否实施了CSRF保护(Token、同源验证等)
  • 验证输入输出过滤,防止XSS攻击
  • 检查CORS配置是否合理(Origin、Methods、Headers)
  • 验证身份认证和授权机制是否健全
  • 检查是否暴露敏感信息(令牌、密钥、个人信息)
  • 测试参数篡改和IDOR漏洞
  • 验证业务逻辑合理性(重复请求、顺序绕过等)
  • 检查错误处理是否泄露敏感信息
  • 验证HTTPS强制实施和安全标头设置
  • 测试速率限制和防自动化攻击机制

相关文章:

XHR/Fetch请求介绍与安全测试

XHR/Fetch请求介绍与安全测试目录XHR/Fetch是什么?所引发的安全问题XHR/Fetch是什么? XHR/Fetch 都是浏览器与服务器进行数据通信(即 API 调用)的两种主要技术。 简单来说,它们都是用来实现 AJAX(Asynchronous JavaScript and XML)理念的技术,即在不重新加载整个页面的…...

能流新智:MyEMS与开源时代的能源感知

在机器轰鸣的工厂、灯火通明的写字楼、冷热交替的数据中心,能量的流动从未停止。而真正理解这些流动,并与之对话,需要一种新的语言和感知能力。MyEMS,作为一个开源能源管理系统,正是这种感知能力的构建者——它让不可见的能源变得可见,让无序的消耗变得可解,最终让能源管…...

​​普科科技罗氏线圈应用指南:精准掌控电流测量的艺术​​

普科罗氏线圈以无磁饱和、宽频带、灵活轻便优势,提供高效精准电流测量解决方案。在电力测量、新能源及工业驱动领域,安全、精准地测量电流,尤其是高频、大电流信号,是一项核心需求。传统电流互感器(CT)易饱和、体积大、安装不便的局限性日益凸显。​​普科科技(PUKY-Tec…...

go mod基础

新建项目 并且新建 mod 管理 mkdir go_study cd go_study && go mod init studygo mod tid 下载依赖以及移除未使用的依赖require github.com/gin-gonic/gin v1.9.0...

go 变量作用域

1...

Oracle笔记:测试update语句关联表扫描的次数

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。Oracle笔记:测试update语句关联表扫描的次数下面是测试一下update语句…...

​​电流互感器选型指南:以普科科技产品为例

普科科技电流互感器选型注重测量与保护需求,明确参数、合理选型以确保安全与精度。在电力测量、监控和保护系统中,电流互感器(CT)扮演着至关重要的角色。它不仅是系统安全运行的"感知器官",更是确保数据准确、保护可靠的关键部件。面对多样的应用场景和复杂的工…...

.NET驾驭Word之力:玩转文本与格式

在前面的文章中,我们已经了解了Word对象模型的核心组件,包括Application、Document和Range对象。掌握了这些基础知识后,我们现在可以进一步深入到文档内容的处理,特别是文本的插入和格式化操作。本文将详细介绍如何使用MudTools.OfficeInterop.Word库来操作Word文档中的文本…...

读书笔记:白话解读位图索引:什么时候该用,什么时候千万别用?

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。本文为个人学习《Expert Oracle Database Architecture Techniques and…...

泰克CT-6交流电流探头测量原理

泰克 CT-6 交流电流探头是一款在电气测量领域广泛使用的专业工具。其测量原理基于电磁感应定律,通过精巧的设计实现对交流电流的精确测量。 从结构上看,泰克 CT-6 交流电流探头主要由磁芯、线圈和信号处理电路等部分构成。当交流电流通过导线时,会在导线周围产生变化的磁场,…...

结构体成员赋值问题

在函数里这样写对吗stCalc->stStitchingRule={.segment_count = 3, .segment_starts = {0, 336, 900}, .segment_lengths = {300, 100, 112}, .stitched_total_length = 512}; 问题分析 在C语言中,直接在函数内对结构体成员(如 stCalc->stStitchingRule)使用​​复合字…...

RepositoryItemGridLookUpEdit 使用 ok

private void Form1_Load(object sender, EventArgs e){下拉初始化();gridControl1.DataSource = DemoData.GetGridData();}private void 下拉初始化(){GridView view = rep_Grid.View;view.Columns.Add(new GridColumn { Caption = "货号", FieldName = "Goods…...

wso2~系统端口总结

好的,这是 WSO2 API Manager 中这些常见端口的详细总结。了解这些端口对于部署、运维和故障排查至关重要。 我将它们分为 API 流量端口、管理/控制平面端口 和 内部通信端口 三类。一、API 流量端口 (API Traffic Ports) 这些端口用于处理实际的 API 调用(数据平面流量)。端…...

故障处理:19C RAC改私网IP后重建集群时报网络找不到

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。今天在回复23年安装的ARM环境的19C的集群时,将服务器的私有网络和共有…...

谈谈程序猿的职业方向

大学生在校期间可能会有这样的疑问:将来就业干啥好呢? 如果你是学计算机的,将来想进入软件和互联网行业,恭喜,这是个好行业,薪水很高, 也不需靠关系,一切靠实力说话,不需要有个好爸爸。 坏处是,这个行业需要极为繁重的脑力和体力劳动,加班也是司空见惯的事情。 接下…...

Flash Attention详解

Flash Attention 并没有减少 Attention 的计算量,也不影响精度,但是却比标准的Attention运算快 2~4 倍的运行速度,减少了 5~20 倍的内存使用量。究竟是怎么实现的呢? Attention 为什么慢? 此处的“快慢”是相对而言的。严格意义上来说,相比于传统的 RNN,Transformer中的…...

eclipse插件调用保护后的jar包流程

jar包如何调用使用 导入jar包创建好项目后,进入项目后,创建libs文件夹,将jar包放入libs文件夹内; 选中项目,点击Runtime->Add选项,添加libs里的jar包;项目配置 当jar包导入成功后,对此项目进行配置。选中Build,将libs目录下所需要的jar包勾选上;添加成功后,点击b…...

通义上线 FunAudio-ASR,噪声场景幻觉率降 70%;盒智科技推出 AI 口语练习陪伴设备 Lookee 丨日报

开发者朋友们大家好:这里是 「RTE 开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的技术」、「有亮点的产品」、「有思考的文章」、「有态度的观点」、「有看点的活动」,但内容仅代表编辑的个人观点…...

reLeetCode 热题 100-11 盛最多的谁 - MKT

reLeetCode 热题 100-11 盛最多的谁 1 bu 不合格答案 暴力// 时间超时int my_1(vector<int>& height){// x * hign_minint max_=0;for(int i=0; i<height.size()-1;i++){for(int j=i+1; j<height.size();j++){int high_= std::min(height[i],height[j]);int …...

AI 视频生成网站 Viddo AI 的 SEO 分析和优化建议

AI 视频生成网站 Viddo AI 的 SEO 分析和优化建议有个朋友的新网站 Viddo AI - AI 生成图片和视频上线了,我提了一些 SEO 和前端方面的问题和修改意见,顺便记录到蓝星空的 Blog,希望对其他朋友也有一点帮助,可能也有一些考虑不周的地方,欢迎大家指正!SEO方面的问题和修改…...

k3s 离线部署流程(内网环境)

k3s 离线部署流程(内网环境) 一、准备工作 1. 下载 k3s 安装相关文件(在有外网的跳板机上)k3s 安装脚本curl -sfL https://get.k3s.io -o install_k3s.shk3s 二进制文件curl -LO https://github.com/k3s-io/k3s/releases/download/<k3s版本>/k3sk3s 镜像包wget https…...

GPS简单模拟

注册回调 LocationListener,listener 被封装在 receiver 中@Overridepublic void requestLocationUpdates(LocationRequest request, ILocationListener listener,PendingIntent intent, String packageName) {...Receiver receiver;if (intent != null) {receiver = getRecei…...

C# Avalonia 15- Animation- XamlAnimation

C# Avalonia 15- Animation- XamlAnimation同样用两种方式实现动画,各位自行选择。实现了一个ArithmeticConverter类。 ArithmeticConverter.cs类using Avalonia.Data.Converters; using System; using System.Collections.Generic; using System.Globalization; using System…...

多个表格汇总到一个表格不同的sheet,vba宏

`Sub MergeWorkbookToSheets()Dim Path As StringDim Filename As StringDim Wb As WorkbookDim ws As WorksheetDim ThisWb As WorkbookDim Newsheet As Worksheet设置目标文件夹路径,请修改为您的实际路径Path = "C:\Users\haifeng\OneDrive\桌面\测试bom\" 注意:…...

python读取Excel表合并单元格以及清除空格符

读取合并单元格并保留合并信息 当我们只是使用 pandas 的 read_excel 方法读取 Excel 文件时,我们可能会遇到一个很棘手的问题:合并单元格的信息将会丢失,从而导致我们的数据出现重复或缺失的情况。 在本篇文章中将介绍使用 pandas 正确地读取包含合并单元格的 Excel 表格,…...

算法作业第一周

大厂代码规范代码格式大括号的使用约定。 如果是大括号内为空,则简洁地写成{}即可,不需要换行; 如果是非空代码块则:左大括号前不换行。左大括号后换行。右大括号前换行。右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行。 任何二目、三目运算符的左右两…...

域名购买方案

https://linux.do/t/topic/963151/21...

Anby_の模板题集

洛谷版。 博客备份版。 普及- B3647 【模板】Floyd #include<bits/stdc++.h> #define x first #define y second using namespace std; const int N=2e2+10,inf=0x3f3f3f3f,mod=1e9+7; typedef unsigned long long ull; typedef pair<int,int> pii; typedef long l…...

AI 编程的“最后一公里”:当强大的代码生成遇上模糊的需求

随着AI编程工具的崛起,代码生成效率极大提升,但AI与实际项目需求间的“鸿沟”却日益凸显。本文探讨了在AI驱动的开发流程中,结构化、高质量的开发文档如何成为连接“模糊想法”与“精准代码”的关键桥梁,有效打通AI编程的“最后一公里”。引言:AI 编程时代的“新瓶颈” 20…...

ctfshowWeb应用安全与防护(第四章)wp

Session固定攻击 登录test账号,给admin发送消息回到主页发现用户名变成了admin,获得了flagJWT令牌伪造 先随便输入一个用户名,获得jwt tokenJWT伪造网站 JSON Web Tokens - jwt.io 由于没有校验签名, 我们可以采用 None 攻击,将alg改为none,admin改为True修改cookie,刷新…...

创建sshkey并链接git

以 Hugging Face 账户为示例: 生成ssh key到指定文件 ssh-keygen -t rsa -C "email.com" -f C:\Users\Administrator\.ssh\huggingface将生成的key放到hugging_face上 https://huggingface.co/settings/keyswindow powershell: Get-Service ssh-agent | Set-Servic…...

使用bash脚本检测网站SSL证书是否过期 - sherlock

#!/bin/bash# 加载环境变量 . /etc/profile . ~/.bash_profile . /etc/bashrc# 脚本所在目录即脚本名称 script_dir=$( cd "$( dirname "$0" )" && pwd ) script_name=$(basename ${0}) readFile="${script_dir}/domain_ssl.info"# 检查…...

Python 2025:低代码开发与自动化运维的新纪元 - 教程

Python 2025:低代码开发与自动化运维的新纪元 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monos…...

为什么Claude Code放弃代码索引,使用50年前的grep技术

为什么Claude Code放弃代码索引,使用50年前的grep技术? https://mp.weixin.qq.com/s/Fa15GoM3_2CUnjdHQ3I7Nw 为什么Claude Code放弃代码索引,使用50年前的grep技术? 原创 余志臻 腾讯云开发者2025年09月16日 08:45 北京 👉目录1 引言:一个看似倒退的选择2 理解状态的本…...

【QT】使用QT编写一款自己的串口助手

步骤一:ui界面设计 控件 接收框控件: (需要将接收框设置为只读 read only) 属性选择控件: 发送框控件: 按钮控件: 外框控件: 文本控件: 界面设计 最终设计结果布局解析程序设计 第一步 在.pro文件中修改增加: QT += core gui serialport // 增加 serialp…...

一句话让AI帮你搞营销?火山引擎Data Agent说:这事儿可以的~

本文为火山引擎数据产品总监刘峰的演讲分享,介绍了在过去的半年中,火山引擎Data Agent在智能营销Agent领域的一些新思考、新能力以及落地实践。 各位线上的朋友,大家好!今天主要跟大家聊聊四个关键主题: 首先,面对用户和业务增长挑战,结合大模型我们有哪些新解法? 其次…...

debian11 使用 podman 部署 n8n

拉取镜像podman pull docker.n8n.io/n8nio/n8n:latest创建目录和启动脚本mkdir -p /root/n8n/ touch run.shrun.sh #!/bin/bash name=n8n data_dir=/root/n8n/data ssl_dir=/root/n8n/ssl cart_file=$ssl_dir/cert.pem key_file=$ssl_dir/key.pemif [ ! -d $data_dir ]; thenmk…...

网络安全反模式:无效工作生成器的根源与解决方案

本文深入探讨网络安全中常见的“无效工作生成器”反模式,通过真实案例解析其成因,并提出基于根本原因分析的解决方案,包括优先级策略、机制构建及实际应用案例,帮助团队避免资源浪费并提升安全效能。网络安全反模式:无效工作生成器 2025年4月19日 3025字 15分钟阅读 本文…...

Excel处理控件Aspose.Cells教程:如何将Excel区域转换为Python列表

在 Python 中处理 Excel 数据通常需要将特定的行和列提取为列表格式。在本教程中,我们将逐步学习如何借助Aspose.Cells在 Python 中将定义的 Excel 范围转换为列表。在 Python 中处理 Excel 数据通常需要将特定的行和列提取为列表格式。将 Excel 范围转换为 Python 列表对于以…...

alpine安装docker以及docker-compose

alpine安装docker以及docker-compose1. 开启community仓库,vim /etc/apk/repositories 2. apk add docker docker compose 3. docker 添加到自启动 rc-update add docker boot 4. 启动docker:service docker start...

运筹学

运筹学绪论 运筹学主要分支划分方法:一般数学规划模型/特定问题的数学模型。前者划分出线性规划/整数规划/非线性规划/DP/网络流/...,后者划分出网络计划/排队论/存储论/决策论/对策论/... 人工智能的许多问题均与运筹学密不可分 核心:建模与求解 e.g.线性规划:给定基函数和…...

[CF848D] Shake It!

\(f(i, j)\):\(S \to T\) 除去 \(S, T\) 有 \(i\) 个点,最大流为 \(j\) 的方案数。 \(g(i, j)\):\(S \to U \to T\) 除去 \(S, T\) 有 \(i\) 个点,最大流为 \(j\) 的方案数。 \(f\) 向 \(g\) 转移:\(f(a, b) \times f(c, d) \to g(a + c + 1, \min(b, d))\)。 当前 \(a + …...

国产化Excel开发组件Spire.XLS教程:使用 Python 设置 Excel 格式,从基础到专业应用

与在 Excel 中手动调整样式相比,使用 Python 进行 Excel 格式设置 并自动化操作,能够帮助我们节省宝贵的时间。本文将演示如何借助 Spire.XLS for Python 通过 Python 设置 Excel 样式。 在处理电子表格时,数据本身固然重要,但可读性同样关键。一个拥有优秀格式设置的 Exc…...

计算机辅助筛选抗菌/抗病毒肽:以SARS-CoV-2为例,解析靶标突破与筛选策略

抗菌药物耐药性(AMR)已成为全球公共卫生的重大威胁 —— 抗生素在农牧业的滥用、临床不合理使用,导致手术、移植等领域的感染治疗难度陡增;而病毒(如 SARS-CoV-2)的变异与耐药风险,进一步加剧了疾病防控压力。在此背景下,抗菌 / 抗病毒肽(AMPs)凭借 “多作用机制(膜…...

c++国外学习视频心得4-opengl

向量有方向,没有位置,有大小,比如力的大小,速度在大小等。归一化:(x/向量长度, y/向量长度, z/向量长度)。纯粹的方向计算就是只有方向上的影响,大小是1所以不影响大小。 向量长度向量点乘向量叉乘...

LOJ #3835. 「IOI2022」千岛 题解

Description 千岛是爪哇海里一组美丽的岛屿,其中有 \(N\) 个岛屿,编号为从 \(0\) 到 \(N - 1\)。 有 \(M\) 艘独木舟在岛屿之间航行,编号为从 \(0\) 到 \(M - 1\)。对于满足 \(0 \le i \le M - 1\) 的所有 \(i\),独木舟 \(i\) 可以停靠在岛屿 \(U_i\) 或 \(V_i\),并且在岛…...

(附源码)高校拼车管理系统的设计与实现 - 实践

(附源码)高校拼车管理系统的设计与实现 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace …...

Ubuntu取消vim自动对齐

方法一:在 Vim 中临时关闭自动对齐 在 Vim 编辑文件时,进入命令模式(按 Esc),然后输入以下命令: :set paste这会进入“粘贴模式”,关闭所有自动缩进和格式化功能,适合粘贴代码或手动编辑。 要重新开启自动功能,输入: :set nopaste方法二:修改或创建用户配置文件 vim…...

AI产品测试学习路径全解析:从业务场景到代码实践

深入AI测试领域,掌握核心技能与学习路线 在AI技术日益普及的今天,AI产品的质量保障成为关键环节。如何系统学习AI测试并掌握其核心技能?本文基于一线专家的实战经验,为你梳理出一条清晰的学习路径,涵盖业务理解、指标计算与性能测试三大阶段。 一、先理解业务场景,再制定…...

代码随想录算法训练营第一天 | leetcode 704 27 977

第一题二分查找 简答回答:经典的二分查找,采用的是左闭右闭区间,主要需要注意的就是右区间的下标 代码如下:class Solution { public int search(int[] nums, int target) { int left = 0;//左下标 int right = nums.length-1;//右下标 //循环条件 …...