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

API接口测试简介

今天继续给大家介绍渗透测试相关知识,本文主要内容是API接口测试简介。

免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
再次强调:严禁对未授权设备进行渗透测试!

一、API接口介绍

常见的API接口如下所示:

(一)RPC

RPC,即Remote Procedure Call,远程过程调用的简称,是一个计算机通信协议。该协议允许一台计算机的程序调用另一台计算机的子程序。
RPC一般使用TCP协议进行通信,通常不涉及HTTP协议。

我们后面讲到的Web Service和Restful API都可以看作是RPC的一个子集。

(二)Web Service

Web Service也称为Web服务,是一种跨编程语言和操作系统平台的远程调用技术。Web Service采用标准的SOAP协议进行数据传输,采用WSDL作为描述语言。
WSDL,Web Service Description Language,网络服务描述语言,是一门基于XML的语言,用于描述Web Service以及如何对它们进行访问。
SOAP,Simple Object Access Protocol,简单对象访问协议,是一种交换数据的协议规范,是一种轻量的、简单的、基于XML的协议,能够在Web上交换结构化的和固化的信息。
Web Service是一种较为老旧的重量级接口技术,目前大部分应用在金融机构和老的应用中。

(三)Restful API

Restful API,即符合Rest风格的API,传递数据主要采用2种形式:XML和JSON,目前XML格式比较少见,JSON格式比较常见。

(四)MVC

MVC是Web和APP应用程序开发的流行框架。MVC即Model(模型)、View(视图)和Controller(控制器),这三个模块作用如下所示:
视图:管理展示到屏幕上的图形和文字输出。
控制器:翻译用户的输入,并依照用户的输入操作模型和视图。
模型:管理应用的行为和数据,响应来自视图的数据请求和来自控制器的指令。
这种模式和架构的应用也导致了API接口的大规模应用。

二、API接口测试工具和方法

那么我们应该如何测试这些API接口类型的漏洞呢?在这里介绍两种方法:

(一)Web Service测试

利用搜索引擎语法,查找带有wsdl关键字的网页,例如:
inurl:jws?wsdl
inurl:exe?wsdl
inurl:dll?wsdl
inurl:php?wsdl
inurl:aspx?wsdl
filetype:exe
filetype:dll
filetype:php
等等。

(二)利用soap工具进行测试

其次,我们还可以利用soap工具进行测试,soap UI可以进行渗透测试流程的发起,通信报文的解析以及通信报文集合payload后重新组装等功能。
soap工具代码托管在Github平台上,URL为:https://github.com/SmartBear/soapui,其页面如下所示:
在这里插入图片描述

三、常见API接口漏洞

API接口的常见漏洞有以下6种:
1、逻辑越权漏洞
逻辑越权指的是在API接口测试时,可以猜解不同参数的含义,通过修改这些参数完成越权的操作。
2、输入控制漏洞
输入控制漏洞主要包括XXE、Restful API的注入漏洞、XSS、溢出以及特殊字符串的处理等等。
3、接口滥用
接口滥用常常是因为没有请求频率限制导致的各种遍历和爆破,可能导致短信验证码爆破、登录爆破、手机号遍历、身份证遍历等。
4、信息泄露
信息泄露指的是包括越权导致的信息泄露以及畸形请求导致的信息泄露。
5、HTTP响应头控制
我们可以在发送HTTP数据包时,删除部分信息,例如:

  • 发送X-Content-Type-Options:nosniff
  • 发送X-Frame-Options:deny
  • 发送Content-Security-By:default-src ‘none’
  • 删除指纹头X-Powered-By、Server、X-AspNet-Version等
  • 在响应种强制使用Content-type

6、服务端配置漏洞
如服务器版本信息泄露以及服务端程序本身存在的漏洞等等。

四、API接口安全加固

面对API接口的诸多安全问题,API接口安全加固通常采用以下措施:
1、认证和授权控制
2、用户输入控制
3、接口请求频率的限制
4、输出控制
5、添加安全响应头参数
参考:https://xz.aliyun.com/t/2412
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

相关文章:

  • 计算机网络(二)Linux网络编程
  • Node.js--》如何在Node.js中操作MySQL
  • GitLab安装使用(SSH+Docker两种方式)
  • lscpu查看cpu信息
  • 【Linux编辑神器:vim】
  • 【数据结构】LeetCode移除链表元素、反转链表、链表的中间结点
  • 计算机组成原理例题
  • 浅谈单元测试
  • 【ARMv8 SIMD和浮点指令编程】Libyuv I420 转 ARGB 流程分析
  • Qt6 中如何使用 qsb
  • Spring中Bean会被缓存吗?Spring的Bean是如何被缓存的?
  • 你真的会做项目经理吗
  • AI修复照片
  • 十三、网络编程、UDP、TCP协议
  • 常见的web容器技术选型
  • create-react-app项目添加less配置
  • Flex布局到底解决了什么问题
  • js数组之filter
  • Linux中的硬链接与软链接
  • Python打包系统简单入门
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 两列自适应布局方案整理
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 深度学习入门:10门免费线上课程推荐
  • 使用Swoole加速Laravel(正式环境中)
  • 线性表及其算法(java实现)
  • 一、python与pycharm的安装
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 智能网联汽车信息安全
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • $NOIp2018$劝退记
  • (007)XHTML文档之标题——h1~h6
  • (20050108)又读《平凡的世界》
  • (LeetCode 49)Anagrams
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (ZT)一个美国文科博士的YardLife
  • (附源码)php新闻发布平台 毕业设计 141646
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)setTimeout 和 setInterval 的区别
  • .form文件_一篇文章学会文件上传
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET MVC第三章、三种传值方式
  • .NET 的程序集加载上下文
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • [20180129]bash显示path环境变量.txt
  • [C/C++]数据结构 栈和队列()
  • [ESP32] 编码旋钮驱动
  • [hdu 4405] Aeroplane chess [概率DP 期望]
  • [Interview]Java 面试宝典系列之 Java 多线程
  • [Mac软件]Adobe XD(Experience Design) v57.1.12.2一个功能强大的原型设计软件
  • [nlp] 损失缩放(Loss Scaling)loss sacle