API全称为Application Interface,是应用程序对外提供功能的接口,现在主要有三种api风格,分别是JSON风格的api,RESTful风格的api以及Graphic风格的api
JSON风格
请求获取用户信息
RESTful风格
请求获取用户信息
请求修改用户信息
Graphic风格
请求获取用户信息
API测试这种漏洞主要包含了对开放api期望运行逻辑的破坏以及对未开放的api的检测和调用,导致的危害可能有敏感信息泄露,应用行为被改变等
这篇文章主要讨论JSON和RESTful APIs
当你在测试一个api的时候,关注下面这些点:
- api接收并处理的数据,包括必需的和可选的
- api接受的请求类型,包括请求方法和media formats
- 速率限制和认证机制
使用不同的请求方法
HTTP1.0定义了三种请求方法: GET、POST、HEAD
- 方法请求一个指定资源的表示形式,使用 的请求应该只被用于获取数据。
- 方法请求一个与 请求的响应相同的响应,但没有响应体。
- 方法用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用。
HTTP1.1新增了六种请求方法:OPTIONS、PUT、DELETE、TRACE 、CONNECT、PATCH - 方法用于描述目标资源的通信选项。
- 方法用有效载荷请求替换目标资源的所有当前表示。
- 方法删除指定的资源。
- 方法沿着到目标资源的路径执行一个消息环回测试。
- 方法建立一个到由目标资源标识的服务器的隧道。
- 方法用于对资源应用部分修改。
使用不同的Content-Type
- 用途:用于 JSON 格式的数据传输,常用于 RESTful API。
- 用途:用于 HTML 格式的数据传输,常用于 Web 页面响应。
- 用途:用于 HTML 表单提交的编码方式,将表单数据编码为键值对。
- 用途:用于文件上传表单的编码方式,允许同时上传文件和其他数据。
- 用途:用于纯文本数据传输,没有特殊的格式化要求。
- 用途:用于 XML 格式的数据传输。
- 用途:用于传输 JavaScript 代码。
- 用途:用于传输二进制数据,不指定特定的文件格式,通常用于文件下载。
- 用途:用于传输 JPEG 格式的图像文件。
- 用途:用于传输 PNG 格式的图像文件。
最关键的一段代码是:
- 如果不想你的api被公开地访问,保管好你的文档
- 确保你的文档足够全面,允许合法测试人员收集全面的攻击面
- 设置允许接受的http方法
- 验证收到的请求或响应是期望的格式
- 使用普遍的报错信息以避免泄露有价值的信息
- 对所有版本的api设置防御措施,而不仅仅是当前主要版本
- 将用户可以修改的属性列入白名单,用户不能修改的敏感属性列入黑名单
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/12846.html