API测试(一):PortSwigger靶场笔记

写在前面

这篇文章是关于作者在学习PortSwigger的API Test类型漏洞时的记录和学习笔记
使用到的工具为Burp Suite Pro

漏洞简介

什么是api

API全称为Application Interface,是应用程序对外提供功能的接口,现在主要有三种api风格,分别是JSON风格的api,RESTful风格的api以及Graphic风格的api

JSON风格

请求获取用户信息

POST /api/getUser HTTP/1.1
Host: example.com
Content-Type: application/json

{
  "userId": 1
}
RESTful风格

请求获取用户信息

GET /api/users/1 HTTP/1.1
Host: example.com

请求修改用户信息

POST /api/users HTTP/1.1
Host: example.com
Content-Type: application/json

{
  "name": "Jane Doe",
  "email": "[email protected]"
}
Graphic风格

请求获取用户信息

POST /graphql HTTP/1.1
Host: example.com
Content-Type: application/json

{
  "query": "{ user(id: 1) { id, name, email } }"
}

API测试是什么

API测试这种漏洞主要包含了对开放api期望运行逻辑的破坏以及对未开放的api的检测和调用,导致的危害可能有敏感信息泄露,应用行为被改变等
这篇文章主要讨论JSON和RESTful APIs
当你在测试一个api的时候,关注下面这些点:

  • api接收并处理的数据,包括必需的和可选的
  • api接受的请求类型,包括请求方法和media formats
  • 速率限制和认证机制

和api交互

使用不同的请求方法

HTTP1.0定义了三种请求方法: GET、POST、HEAD

  • GET方法请求一个指定资源的表示形式,使用 GET的请求应该只被用于获取数据。
  • HEAD方法请求一个与 GET请求的响应相同的响应,但没有响应体。
  • POST方法用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用。
    HTTP1.1新增了六种请求方法:OPTIONS、PUT、DELETE、TRACE 、CONNECT、PATCH
  • OPTIONS方法用于描述目标资源的通信选项。
  • PUT方法用有效载荷请求替换目标资源的所有当前表示。
  • DELETE方法删除指定的资源。
  • TRACE方法沿着到目标资源的路径执行一个消息环回测试。
  • CONNECT方法建立一个到由目标资源标识的服务器的隧道。
  • PATCH方法用于对资源应用部分修改。
使用不同的Content-Type

以下是最常使用的10种Content-Type
application/json

  • 用途:用于 JSON 格式的数据传输,常用于 RESTful API。
    text/html
  • 用途:用于 HTML 格式的数据传输,常用于 Web 页面响应。
    application/x-www-form-urlencoded
  • 用途:用于 HTML 表单提交的编码方式,将表单数据编码为键值对。
    multipart/form-data
  • 用途:用于文件上传表单的编码方式,允许同时上传文件和其他数据。
    text/plain
  • 用途:用于纯文本数据传输,没有特殊的格式化要求。
    application/xml
  • <

你可能感兴趣的:(笔记,网络安全,web安全)