是否可以通过OWASP ZAP测试rest-api? 攻击网址仅适用于GET请求。
例如,我的api控制器仅使用令牌。我有TokenController,此控制器要求通过JSON数据(包括密码和登录名)的POST数据。我是否可以通过OWASP测试此控制器?
答案 0 :(得分:1)
简短的回答是。答案很长-很复杂:)
测试REST API比测试Web API困难一点-您必须提供有关您的API的Zap信息-它具有哪些端点,参数等。您是否可以共享有关API的更多信息?是否具有OpenAPI / Swagger文档?您有现有测试吗?您可以将其中任何一个用于此任务。
我讲了如何实现这一点-您可以找到录音here。
答案 1 :(得分:0)
可以使用OWASP ZAP自动执行API testint,但是要执行测试,我看到两个选择:提供一些使用模式,例如,用于ZAP的OpenAPI考虑提取信息。第二种选择是运行自动测试以将ZAP捕获为被动扫描信息,然后您可以测试会话信息。
我们建议使用OpenAPI文档。 黄瓜测试看起来像这样:
Feature: Security
This feature is to test pokemon service security
Scenario: Validate passive and active scan
Given I import context from open API specification "/v2/api-docs"
And I remove alerts
| url |
| http://.*/v2/api-docs* |
And I import scan policy "javaclean" from file "javaclean.policy"
When I run active scan
And I generate security test HTML report with name "java-clean-security-report"
Then the number of risks per category should not be greater than
| low | medium | high | informational |
| 0 | 0 | 0 | 0 |
我正在为ZAP开发步骤,请在GitHub上查看:https://github.com/osvaldjr/easy-cucumber/wiki/Security-steps
导入OpenAPI文档的示例步骤:
@Given("^I import context from open API specification \"([^\"]*)\"$")
public void iImportContextFromOpenAPISpecification(String path)
throws ClientApiException, InterruptedException {
String url = getTargetUrl() + path;
log.info("Import Open API from url: " + url);
zapProxyApi.openapi.importUrl(url, null);
waitPassiveScanRunning();
verifyThatTheProxyHasCapturedHostInformation();
}