Owasp Zap Testing Rest API

时间:2018-08-06 11:11:58

标签: rest api testing owasp zap

是否可以通过OWASP ZAP测试rest-api? 攻击网址仅适用于GET请求。

enter image description here

例如,我的api控制器仅使用令牌。我有TokenController,此控制器要求通过JSON数据(包括密码和登录名)的POST数据。我是否可以通过OWASP测试此控制器?

2 个答案:

答案 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();
  }

查看其他步骤:https://github.com/osvaldjr/easy-cucumber/blob/master/src/main/java/io/github/osvaldjr/stepdefinitions/steps/SecuritySteps.java