API安全测试就是从攻击者的视角去审视和滥用你的API,以发现并修复潜在的安全漏洞,比单纯的功能测试更深入,是保障业务安全的重要一步。
API安全测试和方法
静态测试 (SAST/SCA):像一份在代码写好前就进行的安全检查清单。
SAST (Static Application Security Testing):分析源代码、字节码等,查找硬编码的密码、不安全的配置等已知漏洞方式。
SCA (Software Composition Analysis):识别项目依赖的第三方库和开源组件中存在的已知漏洞(CVE),保障供应链安全。
动态测试 (DAST/IAST):像是在系统上线前发起的模拟攻击演习。
DAST (Dynamic Application Security Testing):在应用运行时,通过发送恶意请求来探测漏洞,如SQL注入、跨站脚本攻击等。
IAST (Interactive Application Security Testing):结合SAST和DAST的优势,通过在被测应用中植入探针,实时监测程序内部的数据流和思路,以发现更深层、更隐蔽的漏洞。
渗透测试:这是由安全专家执行的、高度模拟真实攻击者的红蓝军对抗。他们通过侦察、扫描、漏洞利用和报告等结构化过程,尝试攻破API防线。
业务测试:这是最具挑战性的一环,重视的是API的业务流程本身是不是会被恶意利用,而不是代码方面的技术漏洞。如:
一个攻击者能否通过更改URL中的订单ID来查看甚至操作其他用户的订单?
一个攻击者能否通过重复提交请求来绕过使用次数限制?
一个攻击者能否通过特定的操作顺序来触发意想不到的负面结果?
API安全测试检查清单
以下是OWASP API Security Top 10、NIST等权威标准的要求。
API资产整理和分类
发现并记录所有API(包括已废弃的和影子API)。
根据API的数据敏感度、暴露面等进行风险等级分类。
保证每个API都有确定的责任人。
使用OpenAPI/Swagger等规范提供准确、可机读的文档。
监控并安全地停用已废弃的API。
认证和授权
协议强制:对所有端点强制使用OAuth 2.1、OIDC、JWT等强认证协议。
令牌检查:在每个请求中检查令牌的签名、颁发者和有效期。
证据保管:使用密钥保管库(如HashiCorp Vault)安全存储API密钥和令牌。
多因素认证:对管理员或敏感API强制启用MFA。
细粒度授权:实施RBAC或ABAC,保证权限最小化。
对象级授权:对每个涉及资源的请求进行所有权检查,防止BOLA漏洞。
输入和流量保护
严格检查:使用JSON Schema等对所有输入(查询参数、请求头、请求体)进行类型、格式和范围检查。
输入清洗:对输入进行净化,以防范SQL注入、XSS等攻击。
信息屏蔽:返回错误时,避免泄露堆栈信息、库版本等内部细节。
速率限制:实施按用户或API密钥的速率限制,防御暴力破解和DoS攻击。
资源限制:对请求负载大小、CPU/内存消耗等设置上限。
日志和监控
记录包含时间戳、源IP、用户ID等重点字段的审计日志,并集中存储。
利用机器学习建立API行为基线,识别数据爬取、令牌滥用等异常行为。