Skip to content

Commit a2cbb22

Browse files
authored
Merge pull request zaproxy#9188 from thc202/docker/httpsender
Reduce classloading in Docker HTTP Sender scripts
2 parents b02320a + ffe308d commit a2cbb22

File tree

3 files changed

+25
-13
lines changed

3 files changed

+25
-13
lines changed

docker/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
# Changelog
22
All notable changes to the docker containers will be documented in this file.
33

4+
### 2025-12-11
5+
- Update `Alert_on_HTTP_Response_Code_Errors.js` and `Alert_on_Unexpected_Content_Types.js` to reduce classloading (Issue 9187).
6+
47
### 2025-11-21
58
- Updated `Alert_on_HTTP_Response_Code_Errors.js` to work with GraalVM JavaScript engine.
69

docker/scripts/scripts/httpsender/Alert_on_HTTP_Response_Code_Errors.js

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,14 @@
22
// By default it will raise 'Info' level alerts for Client Errors (4xx) (apart from 404s) and 'Low' Level alerts for Server Errors (5xx)
33
// But it can be easily changed.
44

5-
var Pattern = Java.type("java.util.regex.Pattern")
5+
const Integer = Java.type("java.lang.Integer")
6+
const Pattern = Java.type("java.util.regex.Pattern")
7+
8+
const Alert = Java.type("org.parosproxy.paros.core.scanner.Alert")
9+
const ExtensionAlert = Java.type("org.zaproxy.zap.extension.alert.ExtensionAlert")
10+
const HistoryReference = Java.type("org.parosproxy.paros.model.HistoryReference")
11+
12+
const extensionAlert = control.getExtensionLoader().getExtension(ExtensionAlert.NAME)
613

714
pluginid = 100000 // https://github.com/zaproxy/zaproxy/blob/main/docs/scanners.md
815

@@ -16,7 +23,6 @@ function responseReceived(msg, initiator, helper) {
1623
return
1724
}
1825

19-
var extensionAlert = control.getExtensionLoader().getExtension(org.zaproxy.zap.extension.alert.ExtensionAlert.NAME)
2026
if (extensionAlert != null) {
2127
var code = msg.getResponseHeader().getStatusCode()
2228
if (code < 400 || code >= 600) {
@@ -30,10 +36,9 @@ function responseReceived(msg, initiator, helper) {
3036
title = "A Server Error response code was returned by the server"
3137
}
3238
// CONFIDENCE_HIGH = 3 (we can be pretty sure we're right)
33-
var alert = new org.parosproxy.paros.core.scanner.Alert(pluginid, risk, 3, title)
39+
var alert = new Alert(pluginid, risk, 3, title)
3440
var ref = msg.getHistoryRef()
35-
if (ref != null && org.parosproxy.paros.model.HistoryReference.getTemporaryTypes().contains(
36-
java.lang.Integer.valueOf(ref.getHistoryType()))) {
41+
if (ref != null && HistoryReference.getTemporaryTypes().contains(Integer.valueOf(ref.getHistoryType()))) {
3742
// Dont use temporary types as they will get deleted
3843
ref = null
3944
}
@@ -69,7 +74,7 @@ function responseReceived(msg, initiator, helper) {
6974
type = 15 // User - fallback
7075
break
7176
}
72-
ref = new org.parosproxy.paros.model.HistoryReference(model.getSession(), type, msg)
77+
ref = new HistoryReference(model.getSession(), type, msg)
7378
}
7479
alert.setMessage(msg)
7580
alert.setUri(msg.getRequestHeader().getURI().toString())

docker/scripts/scripts/httpsender/Alert_on_Unexpected_Content_Types.js

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,16 @@
22
// By default it will raise 'Low' level alerts for content types that are not expected to be returned by APIs.
33
// But it can be easily changed.
44

5-
var Pattern = Java.type("java.util.regex.Pattern")
5+
const Integer = Java.type("java.lang.Integer")
6+
const Pattern = Java.type("java.util.regex.Pattern")
67

7-
var pluginid = 100001 // https://github.com/zaproxy/zaproxy/blob/main/docs/scanners.md
8+
const Alert = Java.type("org.parosproxy.paros.core.scanner.Alert")
9+
const ExtensionAlert = Java.type("org.zaproxy.zap.extension.alert.ExtensionAlert")
10+
const HistoryReference = Java.type("org.parosproxy.paros.model.HistoryReference")
11+
12+
const extensionAlert = control.getExtensionLoader().getExtension(ExtensionAlert.NAME)
813

9-
var extensionAlert = control.getExtensionLoader().getExtension(org.zaproxy.zap.extension.alert.ExtensionAlert.NAME)
14+
var pluginid = 100001 // https://github.com/zaproxy/zaproxy/blob/main/docs/scanners.md
1015

1116
var expectedTypes = [
1217
"application/octet-stream",
@@ -37,10 +42,9 @@ function responseReceived(msg, initiator, helper) {
3742
var risk = 1 // Low
3843
var title = "Unexpected Content-Type was returned"
3944
// CONFIDENCE_HIGH = 3 (we can be pretty sure we're right)
40-
var alert = new org.parosproxy.paros.core.scanner.Alert(pluginid, risk, 3, title)
45+
var alert = new Alert(pluginid, risk, 3, title)
4146
var ref = msg.getHistoryRef()
42-
if (ref != null && org.parosproxy.paros.model.HistoryReference.getTemporaryTypes().contains(
43-
java.lang.Integer.valueOf(ref.getHistoryType()))) {
47+
if (ref != null && HistoryReference.getTemporaryTypes().contains(Integer.valueOf(ref.getHistoryType()))) {
4448
// Dont use temporary types as they will get deleted
4549
ref = null
4650
}
@@ -76,7 +80,7 @@ function responseReceived(msg, initiator, helper) {
7680
type = 15 // User - fallback
7781
break
7882
}
79-
ref = new org.parosproxy.paros.model.HistoryReference(model.getSession(), type, msg)
83+
ref = new HistoryReference(model.getSession(), type, msg)
8084
}
8185
alert.setMessage(msg)
8286
alert.setUri(msg.getRequestHeader().getURI().toString())

0 commit comments

Comments
 (0)