MCPcopy Index your code
hub / github.com/API-Security/APIKit / parseApiDocument

Method parseApiDocument

src/main/java/burp/PassiveScanner.java:49–99  ·  view source on GitHub ↗
(ArrayList<ApiType> apiTypes)

Source from the content-addressed store, hash-verified

47 }
48
49 public List<IScanIssue> parseApiDocument(ArrayList<ApiType> apiTypes) {
50 List<IScanIssue> issues = new ArrayList<>();
51 ExtensionTab extensionTab = BurpExtender.getExtensionTab();
52
53 //遍历扫到的ApiType
54 for (ApiType apiType : apiTypes) {
55 Map<String, IHttpRequestResponse> apiDocuments = apiType.getApiDocuments();
56 //遍历ApiType中的接口文档
57
58 for (Map.Entry<String, IHttpRequestResponse> entry : apiDocuments.entrySet()) {
59 ApiDocumentListTree apiDocumentListTree = new ApiDocumentListTree(extensionTab);
60
61 ExtensionTab.ApiTableData mainApiData = new ExtensionTab.ApiTableData(false, apiDocumentListTree, String.valueOf(this.scannedCount), entry.getKey(), String.valueOf(BurpExtender.getHelpers().analyzeResponse(entry.getValue().getResponse()).getStatusCode()), apiType.getApiTypeName(), "true", entry.getValue(), CommonUtils.getCurrentDateTime());
62 ArrayList<ExtensionTab.ApiTableData> subApiData = new ArrayList<>();
63
64 mainApiData.setTreeStatus(Constants.TREE_STATUS_COLLAPSE);
65
66 apiDocumentListTree.setMainApiData(mainApiData);
67 apiDocumentListTree.setSubApiData(subApiData);
68
69 // 排序
70 List<ApiEndpoint> apiEndpoints = apiType.parseApiDocument(entry.getValue());
71 apiEndpoints.sort(Comparator.comparing(ApiEndpoint::getUrl));
72
73 // 遍历接口文档中的接口
74 for (ApiEndpoint apiEndpoint : apiEndpoints) {
75 IHttpRequestResponse apiParseRequestResponse = apiEndpoint.getHttpRequestResponse();
76 ExtensionTab.ApiTableData currentData = new ExtensionTab.ApiTableData(true,
77 apiDocumentListTree,
78 "",
79 apiEndpoint.getUrl(),
80 String.valueOf(BurpExtender.getHelpers().analyzeResponse(apiParseRequestResponse.getResponse()).getStatusCode()),
81 apiType.getApiTypeName(),
82 (BurpExtender.getHelpers().analyzeResponse(apiParseRequestResponse.getResponse()).getStatusCode() != 200 && BurpExtender.getHelpers().analyzeResponse(apiParseRequestResponse.getResponse()).getStatusCode() != 405 && BurpExtender.getHelpers().analyzeResponse(apiParseRequestResponse.getResponse()).getStatusCode() != 500 ? "false" : "true"),
83 apiParseRequestResponse,
84 CommonUtils.getCurrentDateTime());
85
86 subApiData.add(currentData);
87 }
88
89 extensionTab.add(apiDocumentListTree);
90 this.scannedCount++;
91 }
92
93 // API 指纹检测 - 报告输出
94 issues.addAll(apiType.exportIssues());
95 // API 指纹检测 - 控制台报告输出
96 BurpExtender.getStdout().print(apiType.exportConsole());
97 }
98 return issues;
99 }
100
101 @Override
102 public List<IScanIssue> doActiveScan(IHttpRequestResponse httpRequestResponse, IScannerInsertionPoint insertionPoint) {

Callers 2

actionPerformedMethod · 0.95
doPassiveScanMethod · 0.95

Calls 15

getExtensionTabMethod · 0.95
getHelpersMethod · 0.95
getCurrentDateTimeMethod · 0.95
setTreeStatusMethod · 0.95
setMainApiDataMethod · 0.95
setSubApiDataMethod · 0.95
addMethod · 0.95
getStdoutMethod · 0.95
getApiDocumentsMethod · 0.65
getApiTypeNameMethod · 0.65
parseApiDocumentMethod · 0.65

Tested by

no test coverage detected