API测试技术解决方案

API使用痛点

移动互联网发展,各类Client层出不穷,网站不再前后端一体,各大平台,例如Facebook platform、微博、微信公共平台等,都不需要显式的前端,而是通过统一的提供服务接口为Web、iOS、Android等提供服务,例如RESTful API。

而这些接口,也就是API,它的诞生是便是为了在无需访问源码、无需理解内部工作机制的情况下,向开发人员提供基于软件或硬件的访问能力,封装一组特定功能,降低开发难度。因此,在带来便利的同时,也存在一些必然的风险。

API常见的漏洞攻击类型

DoS攻击:大规模调用API造成系统资源损耗,严重时甚至导致系统瘫痪。
 跨站脚本攻击Cross-Site Scripting (XSS)
 SQL注入(Injection)
参数Parameter)攻击
恶意代码注入( Malicious Code Injection)
 业务逻辑漏洞攻击Business Logic Attacks(BLA)
API 请求响应的篡改 身份和Session的权限攻击 敏感信息泄漏

API测试面临的问题

l API的安全性和可靠性无法通过UI测试验证

由于API是设计给程序使用的,所有一般不提供UI,也就无法在UI测试的时候验证API是否安全可靠。同时,API通常使用较为复杂的协议和数据结构,提高了测试用例的专业性和测试难度。

l 无法通过源码审核工具进行测试

源码审核是针对代码层进行分析,无法识别API接口的程序提供者。而API的检测需要针对请求参数、协议、响应结果进行动态分析,对API响应是否正确进行判断,如果不配合工具辅助,极易出现误报,需要大量的人工投入。

SecZone技术解决方案

针对API面临的风险特点,SecZone团队在确保信息完整性、机密性、可用性的基础上,结合源码审核、渗透测试、模糊测试等多种技术手段,设计了一套API测试方案。


参数
(Parameters)



身份
(Identity)



中间人
(Man-in-the-middle)


测试内容

Ø URL

Ø query parameters

Ø HTTP headers

Ø post content

Ø Authentication

Ø authorization

Ø session tracking

Ø ……

Ø HTTPS

详细描述

Ø 识别待测的API参数;

Ø 应用针对参数的各类攻击进行篡改参数,实施测试:XSS

SQL injection

Invalid Types

HTTP 响应分割

Buffer Overflow字串

……

Ø 对请求做身份认证,并且防止篡改,重放攻击;

Ø 测试API是否具有强安全级别的认证模式;

Ø 尝试越权,检测未授权的功能访问和数据引用是否成功。

Ø 检测API是否启用 SSL/TLS

Ø API 敏感数据是否做了强加密,以防范数据被篡改;

Ø 所有的凭据、 密钥、令牌是否都得到有效保护。

测试目的

验证可用性及完整性

验证机密性

验证可用性及完整性

l 源码审计

通过源码审计及设计分析,可以分析出代码级别的如验证、参数错误处理等等不安全代码模式导致的安全风险及设计上的安全缺陷。

l 渗透测试与模糊测试的结合

通过分析API参数的信息、请求协议、认证方法及响应头,设计出渗透测试的用例,然后通过结合模糊测试工具实现自动化的安全检测。

价值体现

通过自动化测试及安全代码审计,可以在不增加或改变敏捷开发流程的同时,实现与敏捷开发、CI系统、单元测试框架和bug跟踪解决方案的无缝集成。


l 更安全的代码

随着应用程序的复杂性和新技术的出现,传统的测试方法可能无法检测到应用程序中存在的所有安全缺陷,通过安全代码审计,发现潜在的安全风险,从代码上解决安全问题,实现应用程序的自我防护。

l 自动化测试

应用程序通常由许多API或微服务组成。一般的测试工具需要用户手动配置产品来测试的每个API通过我们的自动化测试工具可以实现自动检测并测试应用包含的所有API,及处理现代复杂的现代程序。

l 融入现代开发流程

现代开发团队会频繁更新对其部署产品,一般测试工具会花费大量时间和成本去查找、验证和修复每个新版本的软件bug。将我们的模糊测试工具与CI系统、单元测试框架和bug跟踪解决方案集成,使开发人员不仅能够保证产品安全,而且无需学习新的工具。