详解SOAP(Simple Object Access Protocol,简单对象访问协议)

什么是SOAP?

1、基于 XML 的跨平台、跨语言的通信协议;

2、核心用于不同系统(如 Java 后端、.NET 服务、硬件设备)之间通过网络交换结构化数据,本质是 “用 XML 规范封装请求 / 响应数据的通信标准”

3、通过HTTP携带标准规范的XML,完成数据的传递和翻译;

SOAP的基础架构

使用XML的标准和规范,必须头尾闭合的语法,<xxxxx> 必须使用</xxxxx>闭合;无数据的话可直接<xxxx/>闭合;

SOAP 协议规定了外层的 <Envelope> <Header> <Body> 结构,其中<Body> 里面存携带核心业务数据;

结构示例:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>

  </soap:Header>
  <soap:Body>

  </soap:Body>
</soap:Envelope>

这是基本架构,其中代表的意义通俗化来说如下:

1、把一个数据包送到服务器端,这个时候,快递公司呢就是HTTP协议,他负责进行数据包裹的运输;

2、<soap:Envelope>代表包含数据的纸箱子,并且通过xmlns(命名空间)详细解释要运行给那个模块的,为后续的解析提供铺垫;

3、 <soap:Header>则代表纸箱子上面的快递单号,告诉快递人员这个需要怎么传递,提前声明需要调用的那个模块的那个接口,需要执行什么动作;

4、<soap:Body>就是代表数据,至于里面是什么,传输者不关系,要求送到就可以;

那首先怎么理解上边提到的命名空间,是否必要?下面做详细介绍:

命名空间(Namespace,简称 xmlns)

核心目的是 解决 “不同场景下相同标签名冲突” 的问题—— 就像现实中 “同名的人” 需要用 “身份证号” 或 “所属公司” 区分一样,XML 标签通过 “命名空间” 明确其 “归属系统”,避免解析器混淆。

提前声明这个包裹是那个业务系统,提前压入所需要的标签集等;

格式为:

xmlns:前缀="命名空间URI"

这个命名空间URI都是官方指定的,之前博客中提到的都有:

组件 / 场景 命名空间 URI 常用前缀
SOAP 1.1 http://schemas.xmlsoap.org/soap/envelope/ soapenv、soap
WS-Management(wsmv) http://schemas.microsoft.com/wbem/wsman/1/windows/shell wsmv
WS-Management 基础 http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd wsman
Exchange EWS http://schemas.microsoft.com/exchange/services/2006/messages exch
.NET PowerShell 序列化 http://schemas.microsoft.com/powershell/2004/04 无(默认)

命名空间分为全局声明和局部声明;示例中为全局声明,即在<soap:Envelope>中进行;

局部声明则是在某个子标签中声明,仅该标签及其子标签可用(较少用,不如全局声明简洁);

示例:

<Body>
  <exch:ProxyRequest xmlns:exch="http://schemas.microsoft.com/exchange/services/2006/messages">...</exch:ProxyRequest>
</Body>

序列和反序列数据

序列化是发送者把对象转换成可传输 / 存储的格式(如 XML),反序列化是接收者把这种格式还原为对应类型的对象(正常场景是约定的指定对象,攻击场景可能被篡改)

所以之前提到过的CVE-2022-41082,就是通过服务器端反序列化数据时他们不会校检抓换后对

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

L_zook

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值